【问题标题】:How can I debug an embedded process?如何调试嵌入式进程?
【发布时间】:2013-03-20 03:44:39
【问题描述】:

我在arm + Linux平台上调试进程有问题:

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

有没有其他方法可以调试这个问题?

【问题讨论】:

    标签: c linux debugging embedded


    【解决方案1】:

    您还可以启用core(5) 转储,然后在该核心上使用gdb 事后分析

      gdb yourprogram core
    

    要启用核心转储,您需要使用RLIMIT_CORE 调用setrlimit(2) 系统调用,通常在某些父进程中(例如带有ulimit 的shell)

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

    来启动你的程序
      gdb --args yourprogram argtoyourprogram
    

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

    【讨论】:

      【解决方案2】:

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

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

      2. 使用 Android-ndk 调试您的分段错误。这种调试可以提供错误的准确位置。

      【讨论】:

      • 原始海报可能有一个在 ARM 上运行的嵌入式 Linux,而不是 Android...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 2020-08-24
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2022-04-07
      • 1970-01-01
      相关资源
      最近更新 更多