C_and_CPP 板


LINE

在Visual Studio 2008編寫MFC GUI時遇到一個莫名其妙的神奇問題 首先上圖: https://i.imgur.com/eGBVQ.jpeg 我在這個function創建一個變數byWTF 之前是別的名字,但我後來故意改一個沒用過的變數名稱保證這個名稱不可能被用過 然後實際在debug時,發現這個變數絕對不會被創建 導致後續出現一系列非預期錯誤 從圖中也能看到 byWTF早就被宣告 上一行執行也給他賦值了 但是把他Add watch就發現這個變數根本沒被放到記憶體 然後後面實際要用到他就直接閃退報錯了 所有其他變數都能正常宣告創建 就他跟我之後測試用建的所有變數都無法正常創建 我這邊到底是做錯了甚麼?真的毫無頭緒 更新: Debug build可以正常宣告, Release build就會出問題 240711 AM09:50更新: 我把整個release資料夾砍掉 再build 雖然byWTF依舊無法watch 但不會再出錯crash了 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.45.59 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1720601570.A.BC6.html
1F:→ pigyuanncu: 請問你所謂的實際要用他是在迴圈外用還是迴圈內,就07/10 17:52
最內層迴圈 有用在if判斷式 以及後續也會把這個值賦予給別的變數 這個變數沒被創建 導致我後續vector部分index會無法正常賦值 進而造成crash 我用Debug build跑就完全正常 但一用release build就會死在這
2F:→ pigyuanncu: 如你現在提供的程式碼以及敘述,byWTF可能被編譯器op07/10 17:52
3F:→ pigyuanncu: tomized out,所以你也找不到這個變數,但是你如果說07/10 17:52
4F:→ pigyuanncu: 你有實際存取這個變數,他應該就會存在於這個functio07/10 17:52
5F:→ pigyuanncu: n call的stack memory裡,但用debugger找不找得到該07/10 17:52
6F:→ pigyuanncu: 變數是另外一回事(取決於optimization level)07/10 17:52
7F:→ james732: release build會做最佳化,有些變數會消失掉07/10 18:03
但很顯然他把我一個必須用到的變數給最佳化掉了...
8F:→ pigyuanncu: 我覺得如果可以的話,看你要不要貼整段的程式碼,感07/10 18:34
https://i.imgur.com/GDt2v.png 這邊是主要會用到byWTF的程式碼
9F:→ pigyuanncu: 覺起來你的crash可能不是東西不見了,如果是東西不見07/10 18:34
10F:→ pigyuanncu: 了,最爛的workaround可能會是讓東西都變成volatile07/10 18:34
11F:→ pigyuanncu: ,但程式可能就會變很慢07/10 18:34
12F:→ firejox: vbyRawData是放在哪裡07/10 19:52
這個function進入前就會在別的function給值了 我在本文貼的那個斷點處也檢查過該vector裡確實有我預期的所有資料
13F:推 kdjf: 這樣形式的變數變成直接存取/沒給位置很正常啊,找個可以記07/10 19:53
14F:→ kdjf: 憶體管理和安全性的框架找看看是不是踩未定義行為吧07/10 19:53
15F:→ notBeing: Breakpoint 打在210行 試看看能不能watch , 先簡化問題07/10 20:26
16F:→ notBeing: 試試07/10 20:26
有試過在那兩個vector初始化的下面那行加 byWTF = 0; 然而斷點設在210 用F10去跑每一行的時候 會直接跳過byWTF=0; 也watch不到東西(Symbol not found)
17F:推 ctrlbreak: 清專案重編看看 遇到過幾次類似情況 也是release後發生07/10 22:31
好 我再試試看 感謝 == 更新:我把整個release資料夾砍掉 再build 雖然byWTF依舊無法watch 但不會再出錯crash了
18F:→ firejox: 那如果把vbyRawData 用參數的方式會有同樣的問題嗎07/11 12:41
參數是指?
19F:→ firejox: 我要問的是vbyRawData的scope07/11 12:43
該class的private全域變數 我是直接宣告在標頭擋的class裡的
20F:→ firejox: 可能編譯器認為 vbyRawData 都是0,然後有賦值的地方也07/11 12:49
21F:→ firejox: 看不到所以optimize時就不見了07/11 12:49
22F:→ Dracarys: 有可能debug/release builds ABI incompatible 然後lin07/11 21:01
23F:→ Dracarys: k錯07/11 21:01
24F:→ Dracarys: 看不懂什麼叫private全域變數,可以寫個07/11 21:03
25F:→ Dracarys: minimal reproducer放compiler explorer嗎07/11 21:03
26F:→ firejox: 全域變數的話 volatile 應該能解決07/11 21:28
27F:推 wulouise: 這個變數會被optimized out的吧..只有loop內用07/11 22:34
28F:→ wulouise: 不能watch很正常,要看的是實際上那邊crash07/11 22:35
29F:推 closer76: 同意應該是被最佳化掉了,因為是從 vector 取出的,編譯07/12 00:38
30F:→ closer76: 器可以直接算出資料所在位置。07/12 00:38
31F:→ closer76: 不過我另外有個問題:為什麼要用 VS2008? XD07/12 00:38
32F:推 ctrlbreak: release版看不到正常, 不放心就輸出一份asm檔看看邏輯07/12 19:27
33F:→ ctrlbreak: 符不符合需求XD07/12 19:27
34F:推 lc85301: 看 asm 沒必要吧,debug build 就可以了07/12 22:38
※ 編輯: handofn0xus (42.72.7.15 臺灣), 07/26/2024 14:16:57
35F:推 OnlyRD: 懷疑是是你的程式有溢位或是memory leak,所以才會 03/18 02:40
36F:→ OnlyRD: debug沒事release有事。用工具去掃一下程式碼看有 03/18 02:40
37F:→ OnlyRD: 沒有風險。 03/18 02:40







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP