我正在做嵌入式软件开发。从本质上来说,我有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/