您尚未登录。

楼主 #1 2021-01-19 11:16:06

孤星泪
会员
注册时间: 2020-03-18
已发帖子: 235
积分: 231

请问Qt可以在运行中打印调用栈吗?调试中的代码无故调用了很多次,不知道为啥

如题

离线

#2 2021-01-19 12:41:24

metro
会员
注册时间: 2019-03-09
已发帖子: 442
积分: 486

Re: 请问Qt可以在运行中打印调用栈吗?调试中的代码无故调用了很多次,不知道为啥

如果“调用了很多次”的意思是在调试窗口中多次经过同一行代码,那这个是正常的,因为一条代码可能被拆成多条指令,而编译器在优化的时候会在不改变代码逻辑的前提下重排序这些指令,导致调试的时候会依次执行代码对应的多条指令,反映到调试窗口就是这个现象了。

离线

#3 2021-01-19 15:22:36

JasonWoo
会员
注册时间: 2019-06-04
已发帖子: 84
积分: 55.5

Re: 请问Qt可以在运行中打印调用栈吗?调试中的代码无故调用了很多次,不知道为啥

运行中不能吧,Qt必须设置断点才能输出调用栈。
或者你自己去查寄存器手写一个栈回溯,就像kernel的dump_stack那样。

离线

#4 2021-01-19 16:43:41

真的是很烦
会员
注册时间: 2018-10-08
已发帖子: 154
积分: 146.5

Re: 请问Qt可以在运行中打印调用栈吗?调试中的代码无故调用了很多次,不知道为啥

man backtrace ?

离线

#5 2021-01-19 18:49:27

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,134
积分: 1086.5

Re: 请问Qt可以在运行中打印调用栈吗?调试中的代码无故调用了很多次,不知道为啥

就设断点呗!

离线

楼主 #6 2021-01-19 19:11:21

孤星泪
会员
注册时间: 2020-03-18
已发帖子: 235
积分: 231

Re: 请问Qt可以在运行中打印调用栈吗?调试中的代码无故调用了很多次,不知道为啥

我是楼主.

感谢大家回复, 可能是我自己代码没写好, 一部分调试语句用了 printf() & fflush(), 另一部分调试语句用 qDebug()

导致 qDebug() 部分调试输出要么不输出, 要么一起输出, 所以才有了一楼的提问.

现在都改成 printf() & fflush() 就解决了这个问题.




后来放狗搜,确实没有搜到 print call stack 这种函数.

最近编辑记录 孤星泪 (2021-01-19 19:12:41)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn