【发布时间】:2013-03-20 03:44:39
【问题描述】:
我在arm + Linux平台上调试进程有问题:
这是一个使用 CAPWAP 协议的守护进程,因此它不断地与另一个远程进程通信。当它因为分段错误而崩溃时,我通常的调试方法是通过printf添加一些日志输出,以查找进程崩溃的位置,但效率不高。
有没有其他方法可以调试这个问题?
【问题讨论】:
标签: c linux debugging embedded
我在arm + Linux平台上调试进程有问题:
这是一个使用 CAPWAP 协议的守护进程,因此它不断地与另一个远程进程通信。当它因为分段错误而崩溃时,我通常的调试方法是通过printf添加一些日志输出,以查找进程崩溃的位置,但效率不高。
有没有其他方法可以调试这个问题?
【问题讨论】:
标签: c linux debugging embedded
您还可以启用core(5) 转储,然后在该核心上使用gdb 事后分析
gdb yourprogram core
要启用核心转储,您需要使用RLIMIT_CORE 调用setrlimit(2) 系统调用,通常在某些父进程中(例如带有ulimit 的shell)
顺便说一句,你也可以通过gdb 使用
gdb --args yourprogram argtoyourprogram
别忘了用gcc -Wall -g 编译你的程序。 -Wall 选项提供几乎所有警告(非常有用),-g 产生调试信息。
【讨论】:
在这种情况下,有两个调试选项。
使用 GDB 调试器调试您的程序。您可以使用 GDB 在程序中设置断点。
使用 Android-ndk 调试您的分段错误。这种调试可以提供错误的准确位置。
【讨论】: