我在 arm + Linux 平台上调试进程时遇到问题:
这是一个使用 CAPWAP 协议的守护进程,因此它不断地与另一个远程进程通信。当它因分段错误而崩溃时,我通常的调试方法是通过添加一些日志输出printf
,以查找进程崩溃的位置,但这不是很有效。
有没有其他方法可以调试这个问题?
您还可以启用core(5)转储,然后gdb
在该核心上使用 post-mortem
gdb yourprogram core
要启用核心转储,您需要使用 调用setrlimit(2)系统调用RLIMIT_CORE
,通常在某些父进程中(例如带有 的 shell ulimit
)
顺便说一句,你也可以通过gdb
使用启动你的程序
gdb --args yourprogram argtoyourprogram
不要忘记用gcc -Wall -g
. 这些-Wall
选项提供几乎所有警告(非常有用),并-g
产生调试信息。
在这种情况下,有两个调试选项。
使用 GDB 调试器调试您的程序。您可以使用 GDB 在程序中设置断点。
使用 Android-ndk 调试您的分段错误。这种调试可以提供错误的确切位置。