※ 引述《prac.bbs@ptt.cc (浦雷克)》之銘言:
: ※ 引述《Contactman.bbs@bbs.badcow.com.tw (小白退散!)》之銘言:
: : 首先, 請先問問自己, 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)
把最佳化關掉, Release版還有什麼意義??
這不就跟Debug版一樣, 然後原PO的問題還是找不出來, 等到最佳化一開還是死.
重點還是去看看哪些變數沒有做好初始化宣告吧!!
: 再將整個project 做Rebuild
: 執行Build出來的程式...利用Attach process的功能, 並安插中斷點
: 則可逐步trace
: ps.若程式屬於跑一下就結束的...可在裡頭加入一個無窮迴圈, 如
: int k = 1;
: while(k == 1)
: {
: Sleep(500);
: }
: 再將中斷點設於此
--
我主修物理
選修計概
副修離散
唉.....三修國文
--
╭──── Origin:<不良牛牧場> bbs.badcow.com.tw (210.200.247.200)─────╮
│ ↘ Welcome to SimFarm BBS -- From : [61.218.14.146] │
╰◣◣◢ ◢◢《不良牛免費撥接→電話:40586000→帳號:zoo→密碼:zoo》 ◣◣◢ ─╯