有个需求,不知有没有这种工具。C++调试相关。

2022-10-18 16:40:49 +08:00
 PepperEgg

比如现在有个程序,比较大,大概几千 or 几万个 cpp 文件这种。 现在 ui 上有个按钮,我点下按钮,想快速知道从开始到结束都“经过”了哪写 cpp 。 比如输出日志:func A () a.cpp line:80 , func B () b.cpp line:100 这样。

1607 次点击
所在节点    程序员
12 条回复
sillydaddy
2022-10-18 17:09:35 +08:00
需求挺有意思的,应该跟下面这个帖子是一个意思:
https://stackoverflow.com/questions/59745860/how-to-print-all-line-numbers-in-the-source-file-associated-with-the-flow-of-a-p

没有用过这样的工具。不过关键词应该就是这个:code coverage
这有个帖子: https://www.reddit.com/r/cpp/comments/daghzh/code_coverage_tools_for_c/
这有个开源工具: https://github.com/OpenCppCoverage/OpenCppCoverage
> Visual Studio support: Support compiler with program database file (.pdb).
402124773
2022-10-18 17:18:49 +08:00
你用 windbg 就可以做得到啊
导入下 pdb 即可,windows 平台上面,windbg 是个上古神器。你这个需求属于比较简单的。导入 pdb ,下个断点,点击按钮,触发即可。
402124773
2022-10-18 17:26:35 +08:00
你说的是经过了哪些程序啊,这个我搞错了,我还以为是你要打印 stack 。
我说错了
weidaizi
2022-10-18 17:39:53 +08:00
哈哈哈,很有意思的问题。 但是 OP 想错了一点,点击之后出来的不是栈,而是树,所以打印日志跳出来的函数可能会非常多,且不能一眼看出顺序。
回到需求本身,把函数都显示出来是可以的,还可以图形化的把树打出来,以及显示耗时比例,参考: https://gperftools.github.io/gperftools/cpuprofile.html
786375312123
2022-10-18 18:23:41 +08:00
VS 的 debugger 不是就有 stack 的功能吗?
loken2020
2022-10-18 18:32:28 +08:00
有一本书叫《软件调试》,张银奎写的
tool2d
2022-10-18 18:35:47 +08:00
intel 可以把函数耗时给打出来,而函数对于的具体文件名和行号,可以通过编译器生成。

生成文件可以是 map 或者 pdb 。

自己写个工具组合一下就可以了。都用 c++了,不自己造一点轮子,是不太可能的。
wxchen
2022-10-18 18:59:43 +08:00
Sourcetrail 可以看看,不过从去年开始不更新了
dearmymy
2022-10-18 19:11:57 +08:00
指望第三方调试工具不可能的。配合 windbg 下,提前下断点,最多给你打出堆栈信息
自己源码编译,添加代码倒是可以应该。
ylhawj
2022-10-18 19:21:16 +08:00
Sourcetrail ,一目了然,可以试试
janxin
2022-10-19 09:52:08 +08:00
搜索关键词 code coverage tool

不过可能不是所有的都是支持所有场景的,你自己看着改一下
654656413245
2022-10-19 13:18:38 +08:00
Clion: 对函数右键-Find Usages-Call Hireachy

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

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

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

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

© 2021 V2EX