精華區beta Programming 關於我們 聯絡資訊
※ 引述《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