[問題] 偵測特定記憶體位址寫入

看板C_and_CPP (C/C++)作者 (AzureBlaze)時間15年前 (2011/06/03 00:19), 編輯推噓4(4011)
留言15則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2008 windows intel x86 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 很多 問題(Question): 我的程式不知道是link到錯誤的library還是怎樣 導致某些資料被寫入錯誤的值 像是在construtor設好了,之後應該也沒任何函數會動到他, 可是內容卻莫名其妙的跑掉 (資料存在heap裡) 請問有沒有任何方法讓debbuger在特定記憶體位址被寫入的時候break, 然後可以做stacktrace之類的來找出問題的根源? 或是有什麼原因可能導致這樣的問題? 我相信應該是沒有陣列超界之類的 謝謝 補充說明(Supplement): 之前用debug build的時候好像沒這個問題, 最近換成release弄的一個頭兩個大 上一個類似的問題是library有改動可是release忘了重新compile 可是這次真的毫無頭緒了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.123.186 ※ 編輯: azureblaze 來自: 118.168.123.186 (06/03 00:23)

06/03 00:30, , 1F
治標不治本, 先驗證你的操作都不是UB吧
06/03 00:30, 1F

06/03 00:31, , 2F
請詳述問題
06/03 00:31, 2F

06/03 00:35, , 3F
06/03 00:35, 3F

06/03 00:36, , 4F
VC 要怎麼用還真是不知道...
06/03 00:36, 4F

06/03 00:37, , 5F
vc有 Debug->New Breakpoint->New Data Breakpoint
06/03 00:37, 5F

06/03 00:37, , 6F
code有17k行,我對哪裡可能出問題毫無頭緒
06/03 00:37, 6F

06/03 00:37, , 7F
gdb的話有watchpoint可以用. 都一樣的東西
06/03 00:37, 7F

06/03 00:39, , 8F
喔喔new data breakpoint好像就是我要的 謝謝
06/03 00:39, 8F

06/03 00:44, , 9F
windbg 的 "break on access": ba w4 address
06/03 00:44, 9F

06/03 00:59, , 10F
我笨掉了整個晚上我bool沒初始化
06/03 00:59, 10F

06/03 00:59, , 11F
根本沒人動過他,包括他自己
06/03 00:59, 11F

06/03 13:23, , 12F
像是在construtor設好了<--不是設好了嗎?
06/03 13:23, 12F

06/04 01:11, , 13F
他是別人的base class的member
06/04 01:11, 13F

06/04 01:12, , 14F
他說明有寫要自己初始化我沒看到...
06/04 01:12, 14F

06/04 01:42, , 15F
拍拍!!設計不良的結果..
06/04 01:42, 15F
文章代碼(AID): #1DvxWa-2 (C_and_CPP)
文章代碼(AID): #1DvxWa-2 (C_and_CPP)