我已經在Eclipse中爲使用Android NDK(在Windows XP上,使用Cygwin)的本地代碼設置了調試,可以在Java和本機代碼中設置斷點,調試器將正確地斷開它們。我的問題是,在逐步完成本機代碼時,我經常會遇到在繼續經過斷點時不會發生的段錯誤/ SIGILL。在Eclipse中進行Android NDK調試 - 如何停止只在進入本機代碼時出現的segfaults/SIGILL
- 我的應用程序調試的在AndroidManifest.xml中定義
- 我已經改變時
APP_OPTIM
被定義爲調試(NDK)/build/core/build-binary.mk,以防止它剝離出來調試符號,它是在Application.mk文件中 - 我在Android.mk文件中定義
LOCAL_CFLAGS := -g -O0
我JNI目錄,我也曾嘗試這些標誌分別
我看過這個問題與優化的代碼屬有關特德,但使用-O0
關閉優化對我的問題沒有影響。我在編譯時也遇到過使用NDK_BUILD=1
標誌,但在AndroidManifest.xml中定義debuggable=true
顯然具有相同的效果。
我試着在模擬器(運行2.3.3)和設備上運行(運行2.2 - 這令人驚訝的沒有我期望的線程問題),具有類似的結果(儘管如果我沒記錯的話,代碼中的不同點發生故障)。
有沒有人對我可以嘗試的可能修復/步驟有所瞭解,並且/或者已經能夠成功地通過本地代碼而沒有問題?
非常感謝
編輯:這是從來沒有真正解決,但誰想要看看我的指南NDK調試,你可以找到它 here。
編輯2:我得到這個問題的答案來了一旦NDK的新版本出來了,現在這個問題可能是多餘的。我的嚮導可能仍然有效,但我一直沒有使用NDK,所以我不能保證它的持續正確性。我已經接受了我的答案,因爲所有三個人基本上都說了同樣的事情,這是第一個要提交的。
嗨。你是否曾經能夠使Native調試工作正常?出於某種原因,我無法步入(F5)任何本機功能。 – 2011-09-06 03:32:23
@凱文嗨。我所鏈接的指南確實將NDK調試設置爲工作狀態。但是,正如你所說的那樣,它並沒有處理「通過」JNI。但是,由於它將處理在Java和C/C++中設置的斷點,因此可以通過在由NDK調用的C/C++函數的入口點處設置斷點來獲得相應的斷點,然後繼續(F8)到您想要的斷點介入本機代碼。希望有所幫助。 – 2011-09-06 08:54:36
非常感謝!它的確如此。 – 2011-09-06 13:56:25