有没有办法从调试器中的断点回溯?

时间:2017-02-28 11:18:13

标签: c++ debugging

是否有一些调试工具或合理的技术允许从断点“退回”调试器,类似于你如何“进入”或“跳过” - 除了堆栈跟踪?通过向后移动将故障状况追溯到其源头。例如,调试器记录程序执行方式的“踪迹”,或者创建“保存点”,让你跳过断点之前的一百步并从那里开始追踪?

让我们看一个典型的场景:我有一个函数可以处理在程序的几十个位置创建的数据,并经常执行,每秒数百次。它是从一般的“引擎”调用的,从数据提供者进行处理的存储(队列?)中提取数据。此功能要求输入数据是正确的,并检查它是否正确。

一般的想法是永远不会发生这种异常 - 所有呼叫者都应该始终提供合理的输入。然而,某处有一个小虫偶尔会在存储中放置垃圾。

我不能在函数的每次调用中合理地设置断点,因为在条件发生之前有数百个断点。我可以在完整性检查中设置断点并在输入是垃圾时停止执行,但到那时垃圾的创建者的身份早已不复存在。普通的调用层次结构/堆栈跟踪将显示我们已经从引擎调用,这没有错。我可能会在“存储”功能中包含健全性检查,但在特定情况下,数据的有效性可能不会被称为“优先级”,例如,根据仅在存储之后发生的某些条件进行的健全性检查,或者是如此耗时,无法在生产者线程中执行。

通常,我需要追踪从消费到生产的数据。有可能吗?

0 个答案:

没有答案