我目前正在开发一个程序(在C ++中,使用Code :: Blocks),它使用大量随机数并需要一段时间才能开始;大部分时间,它工作正常,但它偶尔会执行非法操作,必须关闭。鉴于遍布整个地方的随机数,以及目前程序达到错误发生阶段(此时间范围正常/可接受)需要约3-5分钟的事实,可靠且方便地再现问题极其重要很难,并且报告每个其他代码行cout
以手动跟踪事物是耗时的,视觉上混乱报告与错误无关的事情,并不总是有用,因为即使我知道程序什么时候停止,我有时候不知道为什么。
有没有办法让我看到程序中的最后一个操作在它崩溃之前是什么,让我看看为什么这个操作会导致崩溃? CodeBlocks中的某些内容最好,但第三方也可以使用。它也需要是我每次测试程序时都可以使用的东西,因为我永远不知道什么时候会发生崩溃。
答案 0 :(得分:0)
听起来你想要一个调试器。 Debugging C and C++ programs using GDB
答案 1 :(得分:0)
这就是调试器的用途。使用完整的调试符号构建系统,配置系统以便获得完整的崩溃报告(在linux中为核心文件),然后使用核心文件启动调试器(或者在调试器中运行整个程序,但这可能需要一段时间,在调试器内部运行通常比在其外部运行要慢得多。
调试器应该能够在非法指令发生时为您提供程序状态,并且您将获得有关程序所处状态的一些见解。从那里你要弄清楚什么是错的,或者你可以制作一些可能触发错误的小型测试用例。
调试无法系统再现的问题是痛苦的,祝你好运!