c++ - 代码工作流程出现问题时如何快速调试?

标签 c++ workflow debugging windbg

我经常遇到如下调试场景:

测试人员提供了一些错误的重现步骤。为了找出问题所在,我尝试使用这些重现步骤来获得最少的必要重现步骤。有时,幸运的是,我发现当对步骤做一些小改动时,问题就消失了。

然后工作转向查找这两个重现步骤之间代码工作流程的差异。这项工作既乏味又痛苦,尤其是当您在大型代码库上工作时,它会处理大量代码并涉及您不熟悉的大量状态更改。

所以我想知道是否有任何工具可以用来比较“代码工作流程”。当我在 WinDbg 中学习了“wt”命令时,我认为这可能是可行的。例如,我可以在一些具有 2 个不同重现步骤的大多数函数上运行“wt”命令,然后比较输出之间的差异。然后应该很容易找到代码流开始 fork 的地方。

但 WinDBG 的问题是“wt”相当慢(也许我应该使用日志文件而不是输出到屏幕)并且不是很用户友好(与 visual studio 调试器相比)......所以我想问一下你们有可用的现有工具吗?还是为 visual studio 调试器开发支持此功能的“插件”可能且困难?

谢谢

最佳答案

我会在探查器下以“覆盖”模式运行它,然后对结果使用 diff 来查看代码的哪些部分在一次运行中执行,而不是另一次运行。

关于c++ - 代码工作流程出现问题时如何快速调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159722/

相关文章:

c++ - fflush on stderrr 导致程序崩溃

c++ - 在main函数中调用join child pthread

c++ - 对 std::sort 使用比较器函数时出现异常错误

workflow - Tridion 工作流程 - 如何在事件处理程序中的事件中获取组件

java - 将 Activiti 任务从旧流程迁移到新流程

python - 无法使用pycharm调试 flask 应用程序

c++ - 什么是数据断点?

c++ - 为什么从文件中读取 float 会得到四舍五入的输出?

sharepoint - 如何在SharePoint工作流中摆脱用户的办公室状态

java - Eclipse 中断标准错误输出