有关动态代码分析的任何参考?

昨天我正在阅读有关调试技​​术的文章,发现Valgrind非常有趣。 它似乎使用动态代码分析技术。 我跟着从原始引用到其他名为Path Profiling的链接 。

我试过谷歌搜索,但我想我使用错误的术语来搜索这些概念的一个很好的参考。 有人建议一个好的资源考虑到我没有编译器和编程语言的背景吗?

路径分析作为理论问题很有意思。 gprof也很有趣,因为它涉及调用图,循环子图等。 有很好的算法可以处理这些信息并在整个结构中传播测量结果。

所有这些都可能诱使你认为它有效(尽管他们从未说过) – 用于发现一般性能问题。

但是,假设您的程序挂起。 你怎么找到这个问题?

我所做的是让它进入无限循环,然后中断(暂停)它以查看它正在做什么。 我查看调用堆栈每个级别的代码,因为我知道循环位于堆栈的某个位置。 如果它不明显,我只是一步一步,直到我看到它重复,然后我知道问题出在哪里。 我怀疑几乎所有人都会这样做。

事实上,如果你花费太长时间停止程序并多次检查它的状态,你不仅可以找到无限循环,而且几乎任何问题,程序运行的时间比你想要的长。

有基于这个概念的分析器工具,例如Zoom和LTProf ,但是对于我的钱来说,没有什么比彻底理解代表性快照更有见解。

你不会找到关于这种技术的好参考,因为(奇怪的是)没有多少人知道它,而且发布太简单了。

关于这个问题还有很多话要说。


实际上,FWIW,我“发表”了一篇关于它的文章,但它只是由编辑审阅,我认为没有人真正阅读过它:Dunlavey,“从调用堆栈采样得到的指令级成本的性能调优” ,ACM SIGPLAN Notices 42,8(2007年8月),第4-8页。