簡體   English   中英

如何在Eclipse中有效地調試用JNI包裝的C代碼? (Android Dev)

[英]How can I effectively debug C code that's wrapped with JNI in Eclipse? (Android Dev)

我有一個段錯誤,但我完全不知道如何找到它。

提示? 在此輸入圖像描述

您可以使用Android NDK Stacktrace Analyzer獲取導致崩潰的C函數的位置。

這些步驟在wiki上 ,但基本上你需要從logcat獲取堆棧跟蹤到一個文件( adb logcat > mycrash.log ),然后將你的庫轉儲到一個文本文件,然后在其中兩個上運行程序。 這是我用來做很多事情的shell腳本:

#!/bin/sh
if test $# -lt 2 ; then
    echo "Extract readable stack trace from Android logcat crash"
    echo "Usage $0 lib.so crash.log"
    exit 1
fi
of=$(mktemp)
echo "Disassemble $1"
~/tools/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-objdump -S $1 > $of
echo "Parse stack trace in $2"
~/bin/parse_stack.py $of $2

根據需要更改Android NDK和parse_stack.py文件的路徑。

如何在Eclipse中有效地調試Android JNI C / C ++代碼:

  1. 將項目設置為混合的Java,C和C ++項目:

    http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

  2. 設置項目以啟用調試:

    http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/#more-23

注意:該站點的作者在Ubuntu上使用了Eclipse(Galileo)。 我在MacOS上使用Eclipse(Helios)時發現了一些差異(特別是在調試設置中)。 設置完成后,Eclipse作為JNI開發的IDE非常有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM