C 如何调试嵌入式进程?

C 如何调试嵌入式进程?,c,linux,debugging,embedded,C,Linux,Debugging,Embedded,我在arm+Linux平台上调试进程时遇到问题: 这是一个使用CAPWAP协议的守护进程,因此它会持续与另一个远程进程通信。当它因分段错误而崩溃时,我通常的调试方法是通过printf添加一些日志输出,以查找进程崩溃的位置,但效率不高 是否有其他方法调试此问题?在这种情况下,有两种调试选项 使用GDB调试器调试您的程序。您可以使用GDB在程序中设置断点 使用Android ndk调试分段错误。这种调试可以提供错误的确切位置 您还可以启用转储,然后在该内核上使用gdbpost-mortem gd

我在arm+Linux平台上调试进程时遇到问题:

这是一个使用CAPWAP协议的守护进程,因此它会持续与另一个远程进程通信。当它因分段错误而崩溃时,我通常的调试方法是通过
printf
添加一些日志输出,以查找进程崩溃的位置,但效率不高


是否有其他方法调试此问题?

在这种情况下,有两种调试选项

  • 使用GDB调试器调试您的程序。您可以使用GDB在程序中设置断点

  • 使用Android ndk调试分段错误。这种调试可以提供错误的确切位置

  • 您还可以启用转储,然后在该内核上使用
    gdb
    post-mortem

      gdb yourprogram core
    
    要启用核心转储,您需要使用
    RLIMIT_core
    调用系统调用,通常在某些父进程中(例如,使用
    ulimit
    的shell)

    顺便说一句,您也可以通过
    gdb
    使用

      gdb --args yourprogram argtoyourprogram
    

    别忘了用
    gcc-Wall-g
    编译程序。
    -Wall
    选项提供几乎所有的警告(非常有用),而
    -g
    生成调试信息。

    原始海报可能有一个嵌入式Linux在ARM上运行,而不是Android。。。