代码之家  ›  专栏  ›  技术社区  ›  Scorb

如何使用androidndkr20使用ndk堆栈?

  •  0
  • Scorb  · 技术社区  · 5 年前

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

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

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

    ndk公司-堆栈.cmd-sym build/intermediates/cmake/debug/obj/armeabi-v7a-转储堆栈.txt

    堆栈.txt文件包含logcat的墓碑。

    我收到的错误是。。。。

    回溯(最近一次调用):文件 “C:\Android\Android-ndk-r20\prebuild\windows-x86\u 64\bin\ndk”-堆栈.py", 第134行,in main()文件“C:\Android\Android-ndk-r20\prebuild\windows-x86\u 64\bin\ndk-堆栈.py", 83号线,主干道 过程=子流程.Popen(命令,标准)=子流程管道,标准输出=子流程管道)文件 “C:\Android\Android-ndk-r20\prebuild\windows-x86\U 64\lib\python2.7/子流程.py", 第711行,in 初始化 errread,errwrite)文件“C:\Android\Android-ndk-r20\prebuild\windows-x86\u 64\lib\python2.7/子流程.py", 第948行,在子项中 startupinfo)WindowsError:[错误2]系统找不到指定的文件[在0.1s内完成]

    0 回复  |  直到 5 年前
        1
  •  4
  •   Elliott Hughes    5 年前

    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():
    
    

    基本上“您需要在提到llvm符号的两个地方添加.exe”。(我引入这个bug是因为我认为您不需要明确地说”blah.exe文件".)