3

我正在做嵌入式软件开发。从本质上讲,我有 3 个不同的应用程序同时运行,它们保证在不同的虚拟地址范围内运行,例如

App 1 在 0x10000000 - 0x20000000 上运行,App2 在 0x20000000 - 0x30000000 上运行,依此类推。

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

其次,假设我的所有 3 个应用程序都在同一个虚拟范围内运行,但是每个应用程序运行时都有一些不同,例如假设一个地址位置包含它们的地址空间 ID,这给了我当时加载哪个应用程序的线索.

我怎么能告诉 GDB 加载所有 3 个符号定义,但根据这些信息自动切换定义?

4

1 回答 1

1

你有没有尝试过

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

由于所有地址都不同,并且所有应用程序都是同时加载的,所以我不太明白您所说的“提示当时加载了哪个应用程序”是什么意思。

如果事实上应用程序没有同时加载,GDB 覆盖支持可能会有所帮助。

于 2010-08-14T02:51:49.297 回答