1

我正在编写一个程序,该程序对我的同事编写的代码运行一些单元测试。我正在使用Google C++ 测试框架。我运行一个产生 3 个线程的函数,然后运行 ​​30 秒。运行后,程序以状态 0 退出。这显然不是预期的行为。我知道它不会让它更进一步,因为我在下一个直接行中放置了一个 cout 语句。

我的问题是,用 gdb 进行调试的最佳方法是什么?这很困难,因为程序没有段错误或类似的东西,它只是退出。有没有办法挂钩退出呼叫,然后得到一个长的回溯?

感谢您的帮助。

编辑:

cSystemCfg* pSystemCfg = new cSystemCfg();
std::cout << "Before runThing" << std::endl;
pSomething->runThing(&acq, pHwIf, pSystemCfg, pIf);
//Exits here, never gets to the next line
std::cout << "After runThing" << std::endl;
4

2 回答 2

3

此外break exit,您可能还需要在其他几个地方设置断点。看看这个问题和答案

于 2010-09-30T13:46:41.617 回答
2

gdb 中的一个简单break exit命令应该停止程序并允许您检查程序exit从任何线程调用时的状态。

这当然是假设程序从exit被调用结束,而不是由于其他原因,例如abort断言失败、未处理的异常或从 main 返回。

于 2010-09-30T13:36:06.977 回答