簡體   English   中英

C ++程序意外退出,如何使用gdb調試它?

[英]C++ Program quits unexpectedly, how do I debug this with gdb?

我正在編寫一個程序,該程序在我的同事編寫的代碼上運行一些單元測試。 我正在使用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;

除了break exit ,您可能還需要在其他幾個地方設置斷點。 看看這個問題和答案

gdb中的一個簡單的break exit命令應該停止程序,並允許您在程序調用任何線程exit時檢查狀態。

當然,這是假定程序從被調用的exit結束,而不是出於某些其他原因,例如abort ,斷言失敗,未處理的異常或從主程序返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM