2011-07-14 39 views
0

我目前正在使用大量随机数的程序(使用C++,使用Code :: Blocks),需要一段时间才能开始;大多数情况下,它可以正常工作,但偶尔它会执行非法操作并且必须关闭。由于整个地方都有随机数字,并且目前程序需要3-5分钟才能到达发生错误的阶段(此时间范围是正常的/可接受的),所以可靠且方便地再现问题非常严重很困难,并且将其他所有代码行汇报到cout以手动跟踪事情是非常耗时的,视觉上报告与事件无关的事情并不总是有帮助,因为即使我知道程序何时停止,我有时也不会不知道为什么。如何轻松找出程序崩溃的位置和原因?

有没有什么方法可以让我在程序崩溃之前查看程序中的最后一个操作,并了解为什么此操作会导致崩溃? CodeBlocks中的某些内容是最好的,但第三方也可以。它也需要我每次测试程序时都可以使用,因为我不知道何时会发生崩溃。

回答

0

这是调试器的用途。使用完整的调试符号构建系统,配置系统以便获得完整的崩溃报告(在linux中是一个核心文件),然后用核心文件启动调试器(或者在调试器中运行整个程序,但可能需要在调试器中运行一段时间通常比在其外运行要慢得多

调试器应该能够在发生非法指令时给出程序的状态,并且您将了解到状态该程序已启动,您可以从那里找出哪些地方出了问题,或者可以制作几个可能触发错误的小型测试用例。

调试问题无法系统复制是一种痛苦,祝您好运!