c - 如何通过使用GDB加载多个符号定义来调试多个应用程序?

标签 c embedded debugging gdb debug-symbols

我正在做嵌入式软件开发。从本质上来说,我有3个同时运行的不同应用程序,这些应用程序保证可以在不同范围的虚拟地址中运行,例如

应用1运行在0x10000000-0x20000000,应用2运行在0x20000000-0x30000000,依此类推。

通常,GDB似乎只接受一个符号定义文件。但是在这种情况下,我可能会加载所有3个定义而不会发生冲突。我怎样才能做到这一点?

其次,假设我所有3个应用程序都在相同的虚拟范围内运行,但是每个应用程序运行时都有所不同,例如,假设一个地址位置包含其地址空间ID,这可为我提供当时加载应用程序的线索。

我该如何告诉GDB加载所有3个符号定义,但根据此信息自动切换定义?

最佳答案

你有没有尝试过

add-symbol-file app1 0x10000000
add-symbol-file app2 0x20000000
add-symbol-file app3 0x30000000

由于所有地址都不相同,并且所有应用程序都是在同一时间加载的,因此我不太理解“当时加载哪个应用程序的线索”的含义。

如果实际上没有同时加载应用程序,则GDB overlay support可能会有所帮助。

关于c - 如何通过使用GDB加载多个符号定义来调试多个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467141/

相关文章:

c - GNU C 编程 : getting error (Segmentation fault (core dumped)) when calling another c dll function

c - 在 linux 下,c 函数有疯狂的行为

c - 在嵌入式 linux 中模拟触摸屏点击

c - 使用 OpenMPI 和调试提示并行计算数组的总和

在 Linux 上交叉构建第三方库位置

c - C中的八个皇后使用递归

c++ - 如何找出我的 .exe 的入口函数?

c++ - vs 用户模式调试器中的反引号是什么

c++ - GPIO模式寄存器

c++ - 嵌入式 Tcl : Does Tcl autocomplete commands?