当前位置: 首页 > 知识库问答 >
问题:

如何通过 Android NDK r20 使用 ndk-stack?

马弘益
2023-03-14

我正在尝试使用随ndk提供的ndk-stack命令。

不幸的是,当我运行它时,脚本崩溃了。

我在windows上运行的命令是...

ndk-stack . cmd-sym build/intermediates/cmake/debug/obj/armea bi-v7a-dump stack . txt

stack.txt文件包含来自logcat的逻辑删除。

我收到的错误是....

回溯(最后一次调用):main()文件“C:\Android\Android-ndk-r20\prebuilded\windows-x86_64\bin\ndk-stack.py”第134行中的“C:\Android\androd-ndk.r20\Prebuilded\windows-x86\u 64\bin\ndk stack.py”第83行中的main proc=subprocess。Popen(cmd,stdin=subprocess.PIPE,stdout=subprocesss.PIPE)文件“C:\Android\Android-ndk-r20\prebuilded\windows-x86_64\lib\python2.7/subprocess.py”,第711行,在init errread,errwrite中)文件“C:\androd\androd-ndk.r20\Prebuild\windows-x6_64-lib\python2.7/subprocess.py”,在_execute_child startupinfo)窗口错误:[错误2]系统找不到指定的文件[在0.1s中完成[

共有1个答案

纪俊良
2023-03-14

Cferris前几天解决了这个问题:https://android-review.googlesource.com/c/platform/ndk/ /977970

以下是您需要在本地应用的补丁(或等待 NDK r21):

diff --git a/ndk-stack.py b/ndk-stack.py
index 93aa0297..f1bb4cd6 100755
--- a/ndk-stack.py
+++ b/ndk-stack.py
@@ -32,6 +32,10 @@ def find_llvm_symbolizer():

     Returns: An absolute path to llvm-symbolizer(1)."""

+    llvm_symbolizer = 'llvm-symbolizer'
+    if os.name == 'nt':
+        # Windows has to include the exe or it won't be found.
+        llvm_symbolizer += '.exe'
     # ndk-stack is installed to $NDK/prebuilt/<platform>/bin, so from
     # `~/Downloads/android-ndk-r18/prebuilt/linux-x86_64/bin/ndk-stack`...
     # ...get `/usr/enh/Downloads/android-ndk-r18/`:
@@ -42,14 +46,14 @@ def find_llvm_symbolizer():
     # And from there construct the llvm-symbolizer path.
     llvm_bin = os.path.join(ndk_root, 'toolchains', 'llvm', 'prebuilt', arch,
                             'bin')
-    path = os.path.join(llvm_bin, 'llvm-symbolizer')
+    path = os.path.join(llvm_bin, llvm_symbolizer)
     if os.path.exists(path):
         return path

     # Okay, maybe we're a standalone toolchain? (https://github.com/android-ndk
/ndk/issues/931)
     # In that case, llvm-symbolizer and ndk-stack are conveniently in
     # the same directory...
-    return os.path.abspath(os.path.join(ndk_bin, 'llvm-symbolizer'))
+    return os.path.abspath(os.path.join(ndk_bin, llvm_symbolizer))


 def main():

基本上“您需要将.exe添加到提到llvm符号化的两个地方”。(我引入了这个错误,因为我认为你不需要明确地说“blah.exe”。

 类似资料:
  • 我正在尝试调试此错误: 从这个问题中我了解到,我应该使用来获得错误日志的含义。 因此,我在Android Studio中使用下载了,现在在我的目录中有一个文件夹。 文件中说: 要使用ndk-stack,首先需要一个包含应用程序共享库未剥离版本的目录。 顺便说一句,我不知道那可能是什么。 你能给我一个循序渐进的指导吗?一步一步的。 TL;DR: 我有上面的错误日志,需要你帮我理解。

  • 问题内容: Doc缺少示例…您如何基于密钥使用? 尝试根据键插入。 将插入位置放在。 从文档… A,X,LO = 0,HI = LEN(a)中 插入 X 在 一个 按排序顺序。这等效于假设 a 已经排序。请记住,O(log n)搜索由缓慢的O(n)插入步骤主导。 用法示例: 我希望把后排序列表中使用。眼下看跌期权的......因为我不使用的钥匙,做插入…文档不显示做用钥匙插入。 问题答案: 这确实

  • 但清单中似乎看不到NDK包。它只显示在UI中。

  • 问题内容: 我希望能够使用创建存储过程,以后再通过php使用它。 但是我不知道该怎么办? 据我了解,我发现我们无法通过来管理存储过程。 还有什么其他工具可以管理存储过程? 我什至不确定通过PHP使用存储过程是否是更好的选择。 有什么建议吗? 问题答案: 由于使用查询创建,更改和删除了存储过程,因此您实际上可以使用phpMyAdmin对其进行管理。 要创建存储过程,可以使用以下命令(必要时进行更改)

  • 问题内容: 我正在尝试使用OmniFaces 1.3(SNAPSHOT)Ajax实用程序的Ajax.updateColumn()方法。更具体地说,我想用Ajax.updateColumn(table,1)代替使用p:ajax update =“:pageContentPanel”,它是一个h:panelGroup(或p:outputPanel),其中包含以下xhtml。 在Bean中,我具有以下内

  • 问题内容: 我正在使用ubuntu 12.04,内核版本是3.12.6,我想学习如何使用kgdb调试内核。我没有得到太多信息。关于 kgdboe (通过以太网的kgdb)。我已经编译了内核并在 menuconfig中 启用了kgdb ,我已经在开发机上使用 make bzImage 创建了内核映像,并在目标机上复制了它,现在的问题是如何同时连接目标机和开发机。我没有为 kgbdoe 设置参数。如果