我建立了一个项目女巫cmake
。我有一个可执行文件,以及.so
之后生成的服务器make
个文件。 .so
文件位于目录build/lib
中,而可执行文件位于目录build/bin
中。
我的项目目录喜欢
-main.cpp
-test.cpp
--cfd/cfd.cpp
cfd.cpp
生成cfd.so
,最后将其链接到可执行文件。
我可以在某些src文件中设置中断,例如main.cpp
,test.cpp
等,但是我无法在.so
链接的源文件中设置中断,例如{{1 }}。
我尝试了几种方法,例如,
当我运行gdb时,程序可以加载cfd.cpp
文件。我使用.so
,输出如下。
但是我无法在info shared
设置休息时间。我使用命令cfd.cpp
,b cfd.cpp:33
行是在test.cpp中调用的函数。 gdb将信息输出如下,
33
任何人都可以帮助我,谢谢。
答案 0 :(得分:0)
我无法在cfd.cpp上设置休息时间
这是因为libcfd_interface.so
是在没有调试信息的情况下编译的( 调试信息(这就是旁边的小(*}
的含义,正如GDB在{{1 }}输出。
解决方法是使用info shared
标志重建它。
我发现当编译为.so时,该命令没有-g选项,其他都没有.so。但是libgbk.so可以读取
您误会了。如果-g
是编译的而没有libgbk.so
标志,那么您也将无法在其中设置断点。
请注意,编译时会返回-g
标志,这与链接不同(您为-g
显示 link 命令,因此您可能混淆两者)。