[英]How do I use ndk-stack using Android NDK r20?
我正在嘗試使用ndk提供的ndk-stack命令。
不幸的是,當我運行它時,腳本崩潰了。
我在Windows上運行的命令是...
ndk-stack.cmd -sym build / intermediates / cmake / debug / obj / armeabi-v7a -dump stack.txt
stack.txt文件包含logcat中的墓碑。
我收到的錯誤是...。
追溯(最近一次通話):文件“ C:\\ Android \\ android-ndk-r20 \\ prebuilt \\ windows-x86_64 \\ bin \\ ndk-stack.py”,行134,位於main()文件“ C:\\ Android \\ android-ndk-r20 \\ prebuilt \\ windows-x86_64 \\ bin \\ ndk-stack.py“,第83行,位於主proc = subprocess.Popen(cmd,stdin = subprocess.PIPE,stdout = subprocess.PIPE)文件” C: \\ Android \\ android-ndk-r20 \\ prebuilt \\ windows-x86_64 \\ lib \\ python2.7 / subprocess.py“,第711行, init errread,errwrite)文件“ C:\\ Android \\ android-ndk-r20 \\ prebuilt \\ Windows-x86_64 \\ lib \\ python2.7 / subprocess.py“,行_execute_child startupinfoinfo中的第948行)WindowsError:[錯誤2]系統找不到指定的文件[以0.1s完成]
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-symbolizer的兩個地方添加.exe”。 (我引入了此錯誤,因為我認為您不需要明確地說出“ blah.exe”。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.