6

我是嵌入式编程的新手,但我必须调试在嵌入式平台上运行的相当复杂的应用程序。我通过 JTAG 接口使用 GDB。

我的程序在某些时候以一种意想不到的方式崩溃。我想这是由于一些与内存相关的问题而发生的。GDB 是否允许我在系统崩溃后检查内存,从而完全没有响应?

4

2 回答 2

6

这取决于您的设置。特别是,由于您使用的是 JTAG,您可以将调试器设置为在检测到异常时停止处理器(例如非法访问受保护的内存等)。如果没有,您可以用无限循环替换您的异常处理程序。然后您可以手动展开异常以查看导致崩溃的处理器正在执行的操作。通常,在这种情况下您仍然可以访问内存,您可以使用 GDB 直接环顾四周,或者将所有内容转储到文件中以便稍后查看。

于 2013-01-03T21:19:23.013 回答
3

这取决于发生了什么崩溃。如果系统只是无响应(在某些无限循环、死锁或类似情况下),那么它通常会响应 GDB,您将能够看到回溯(调用堆栈)等。如果系统/总线/cpu 实际上已经崩溃(在较低级别),那么它可能不会响应。在这种情况下,您可以尝试在可疑位置/变量处设置断点并观察发生了什么。模拟器(ISS,RTL - 如果适用)也可以派上用场,将行为与硬件进行比较。

于 2013-01-03T22:17:04.533 回答