我正在尝试调试使用一个静态构建库的应用程序。
我想在我的库中设置断点,所以我尝试使用以下命令设置它:
中断TS.cpp:600(文件名:行号)
但它说
没有名为TS.cpp的源文件。
在未来的共享库加载时使断点挂起?(y或[n])
所以我在这里按y
(我在浏览互联网后知道了)但按下y
之后gdb并没有在我的断点处停止并且它已完成执行程序。
为什么GDB没有在我的断点停止?
非常感谢任何输入。
答案 0 :(得分:2)
没有名为TS.cpp的源文件
这意味着以下两件事之一:
TS.cpp
未使用-g
编译(或等效TS.o
已被删除)或TS.o
未链接到应用程序。由于您从该来源看到prints
,因此可以肯定#1是实际的根本原因。
info sources命令仅显示我的application.c而不显示我的库的文件
这是另一个确认#1是根本原因。
答案 1 :(得分:0)
您的案例中的问题是源映射。它通常发生在其他机器上编译应用程序并且您在源位置不同的其他机器上进行调试时。
您可以使用gdb的目录命令指定源路径。例如如果您的源位于/ home / taimoor / testApp / src,您可以执行以下操作:
(gdb)目录/ home / taimoor / testApp / src