<分区>
我在另一个线程中询问了如何分析我的东西,人们给了我很多好的答复,除了当我尝试使用几个免费的分析器时,例如 AMD Codeanalyst,它们只支持 Microsoft PDB 格式,并且MingW 无法生成这些。
那么,什么分析器可以帮助我分析一个使用 Lua 脚本并使用 MingW 编译的多线程应用程序?
编辑:gprof 是废话,说我为什么不想要它的 awnser 就在现场......如果我得到它列为麻烦的所有功能,它们都与问题无关我有(有一个特定的 Action 会导致速度大幅下降,我不明白为什么,gprof 也不明白)
如果你不想使用gprof,I'm not surprised .
我花了一段时间才弄清楚如何在 GDB 下执行此操作,但这是我所做的。让应用程序运行并将焦点更改到应用程序的输出窗口,即使它只是一个 DOS 框。然后我按下 Control-Break 键(虽然速度很慢)。然后 GDB 停止,我执行信息线程,它告诉我有哪些线程,通常是 1 和 2。我切换到我想要的线程,比如 线程 2。然后我执行 bt 以查看堆栈跟踪。这准确地告诉我当我按下 Control-Break 时它在做什么。我这样做了很多次,比如 10 次或 20 次,如果出现性能问题,无论是什么问题,它都会出现在堆栈的多个样本中。它使程序运行得越慢,我在看到它之前必须采集的样本就越少。
有关其工作原理和原因的完整分析,请参阅该链接。
附言当我启动 GDB 时,我也会处理 SIGINT 停止打印 nopass。