嵌入式Linux上的轻量级调试

Jas*_*cek 5 c++ linux embedded debugging embedded-linux

我正在开发一个运行在基于Linux的小型SBC(~32MB RAM)上的应用程序.可悲的是,我的应用程序最近变得太大而无法在GDB下运行.有没有人知道我可以在嵌入式Linux中使用的任何好的,轻量级的调试方法?即使能够查看线程的堆栈跟踪也非常有用.

我应该提一下,这个应用程序是用C++编写的,并运行多个线程,所以gdbserver是不行的,因为它不适用于多线程应用程序.

提前致谢,

摩诃

asm*_*asm 4

gdbserver 绝对适用于多线程应用程序,我现在正在开发一个具有 >25 个线程的嵌入式项目,并且我们一直使用 gdbserver。

info threads 
Run Code Online (Sandbox Code Playgroud)

列出系统中所有的线程

thread <thread number from info threads>  
Run Code Online (Sandbox Code Playgroud)

切换到该执行线程。

thread apply XXX <command>  
Run Code Online (Sandbox Code Playgroud)

在 XXX 指定的线程上运行,也可以是“全部”。因此,如果您想要所有正在运行的线程的回溯,请执行以下操作

thread apply all bt
Run Code Online (Sandbox Code Playgroud)

一旦进入给定线程的执行流程,所有典型命令都会像在单线程进程中一样工作。