※ 引述《Contactman.bbs@bbs.badcow.com.tw (小白退散!)》之銘言:
: ※ 引述《happyjob.bbs@bbs.nsysu.edu.tw ()》之銘言:
: : 目前我的exe檔,在debug能跑,但在release卻不能跑,想找出原因。
: : 1、目前用系統內定設定,我在release按F5,它會說沒有debug infomation。
: : 2、接著Project->Setting->Link->Generate debug info勾起來,上面的訊息
: : 消失了,但還是沒辦法step debug
: : 請問:
: : 1、在release要怎麼設,才能debug?我記得有人說過,只要有pdb檔就可debug
: : 2、不然還有什麼其它辦法,可讓我找出release不能跑的原因?
: 首先, 請先問問自己, Debug 和 Release到底差在哪理?
: Debug用的是一個編譯器, Release 用的是另一個不同的編譯器嗎?
: 當然不是, 那他們對編譯器下的參數到底是有哪些不同?
: 說穿了, Release 有對你的Code做最佳化, 也就是說, 編譯器會對你的Code
: 做自認為最好的方式重新編寫, 所以你原始程式的流程在Release很可能都沒有
: 保留下來, 這樣的情況, 如何用你的Source Code做Step by Step的Debug?
: (你只會看到程式東跳西跳....)
: Release版在做Debug, 只能追蹤 Call stack 來猜測問題出在哪, 還有追蹤變數
: 內容的變化來"猜"....
: 不過你的問題, 就經驗來說, 大多是變數初始化的問題.
: Debug會幫你自動初始化原始型別的變數內容, 這個步驟在Release版內常被
: 編譯器省略. 你可能必須明白指定初始化的敘述.
要在release版中trace,
首先將release版中的最佳化關掉(Project->Setting裡的Optimization選Disable)
再將整個project 做Rebuild
執行Build出來的程式...利用Attach process的功能, 並安插中斷點
則可逐步trace
ps.若程式屬於跑一下就結束的...可在裡頭加入一個無窮迴圈, 如
int k = 1;
while(k == 1)
{
Sleep(500);
}
再將中斷點設於此
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.97.113