我在arm + Linux平臺上調試進程時遇到問題:如何調試嵌入式過程?
這是一個使用CAPWAP協議的守護進程,因此它會持續與另一個遠程進程通信。當它發生分段錯誤時,我通常的調試方法是通過printf
添加一些日誌輸出,以查找進程崩潰的位置,但效率不高。
有沒有其他方法可以調試這個問題?
我在arm + Linux平臺上調試進程時遇到問題:如何調試嵌入式過程?
這是一個使用CAPWAP協議的守護進程,因此它會持續與另一個遠程進程通信。當它發生分段錯誤時,我通常的調試方法是通過printf
添加一些日誌輸出,以查找進程崩潰的位置,但效率不高。
有沒有其他方法可以調試這個問題?
您也可以使core(5)轉儲,然後在該核心使用gdb
驗屍以
gdb yourprogram core
要啓用核心轉儲,您需要調用setrlimit(2)系統調用與RLIMIT_CORE
,通常是在一些家長過程(例如與殼牌ulimit
)
順便說一句,你也可以開始你的程序通過gdb
使用
gdb --args yourprogram argtoyourprogram
不要忘了用gcc -Wall -g
來編譯程序。 -Wall
選項提供了幾乎所有的警告(非常有用),並且-g
產生調試信息。
在這種情況下有兩種調試選項。
使用GDB調試器來調試您的程序。您可以使用GDB在程序中設置斷點。
使用Android-ndk調試您的分段錯誤。這種調試可以提供錯誤的確切位置。
oriinal海報可能有一個嵌入式Linux在ARM上運行,它不是Android ... – 2013-03-20 06:26:52