如何设置为 debug

2017-04-03 00:06:56 +08:00
 pagict
在尝试写一个 cpp 的库,生成一个 library ,用 cmake 管理项目,该如何设置,可以在 project 里面的 test 中 debug 进库的代码? Clion !!
2520 次点击
所在节点    C
8 条回复
waruqi
2017-04-03 00:45:06 +08:00
也可以考虑下使用 xmake 直接 xmake run -d test 自动编译运行 加载调试器 然后调试代码 http://xmake.io/cn
skydiver
2017-04-03 01:28:59 +08:00
cmake -DCMAKE_BUILD_TYPE=Debug 或者 RelWithDebInfo
MCVector
2017-04-03 02:26:06 +08:00
在你的 GCC flag 里加 -g
taozhijiangscu
2017-04-03 11:02:18 +08:00
也可以 CMakeLists.txt 中

set(CMAKE_BUILD_TYPE Debug)
wwqgtxx
2017-04-03 12:03:17 +08:00
clion 默认的编译模式不就是 debug 么
pagict
2017-04-03 15:06:19 +08:00
@skydiver @MCVector @taozhijiangscu @wwqgtxx
楼上各位所说的 是针对我的 test executable 的 debug 设置吧,可以 调试我的测试程序,但是无法调试进自己的库代码。如何设置进入库代码调试呢
taozhijiangscu
2017-04-03 21:27:20 +08:00
@pagict

那得看你的库本身有没有调试符号了啊
pagict
2017-05-22 23:48:58 +08:00
擦,原来这个坑空了快两个月了。这两个月实在各种杂事。自己来个阶段小结。

再进一步描述一下,是在 Clion 里的项目,结构形如
---
|--src1.cpp
|--src2.cpp
|--...
|__test/
|-- test_me.cpp

test 用了 gtest,想要调试的是一个在 header 中的 template 函数。

昨天在 clion 里把 debugger 由 lldb 改为 bundled gdb,可以调试进去了。猜想是 lldb 不支持 template 调试所致?
然而,今天进一步做实验,把这个猜想打破了,再次混沌。
今天索性全部 cmd 手工来编译,调试。把编译好的 mylib.so 和调试信息文件夹 mylib.so.dSYM 拷入 test 文件夹,-g 编译 test。用 lldb 调试,打断点 my_class::debug_this_template_func 可以顺利定位,run 起来也可以在这里停住。
反倒是用 gdb (先花了点时间做 codesign ),打断点 my_class::debug_this_template_func 就提示“ Make breakpoint pending on future shared library load?”,当然选 yes,run 起来却还是一跑而过,直接到了 segmentation fault 了。

所以呢,到底是不是由于调试器的原因呢,还得继续调查下去。虽然题主原本的问题是已经解决了。在这里先小结一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX