Re: [問題] 如何取得下道指令的address

看板C_and_CPP作者 (阿布)時間15年前 (2010/05/19 11:01), 編輯推噓7(706)
留言13則, 5人參與, 最新討論串2/3 (看更多)
: 推 VictorTom:開發環境是什麼?? VC的話Debug build trace下去, 把 05/19 10:46 : → VictorTom:disasm window打開就看得到每條指令的address; 不過, 05/19 10:47 : → VictorTom:一般來說ret後東西錯掉, 你自己操作stack爛掉, 導致 05/19 10:48 : → VictorTom:stack內容爛掉, 所以回傳位址/值錯的機會比較大. 05/19 10:48 : → VictorTom:另外, 錯的是什麼?? value?? value如果是一個變數的 05/19 10:49 : → VictorTom:話, 你應該先用data break找出value哪個時點被誰改 05/19 10:49 : → VictorTom:變的, 同樣VC有這功能, 其他環境就再研究吧....Orz 05/19 10:49 開發環境是 linux + gdb "一般來說ret後東西錯掉, 你自己操作stack爛掉, 導致 stack內容爛掉, 所以回傳位址/值錯的機會比較大." 這句我不是很瞭解, stack爛掉指得是什麼東西 想請教一下 裡頭提到的data break是什麼樣的方法? 發生錯誤的variable, 是一個很簡短的function中的 local var 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.206

05/19 11:18, , 1F
其實這需要看你的"錯了"是什麼個錯法 是值變動了還是怎樣
05/19 11:18, 1F

05/19 11:19, , 2F
data break, 讓debugger監控某address, 當該address的
05/19 11:19, 2F

05/19 11:20, , 3F
內容一發生變化, 就break在造成變化的那一段code....
05/19 11:20, 3F

05/19 11:20, , 4F
另外推1F, 你的錯了是什麼個錯法, 既然是很簡短的func
05/19 11:20, 4F

05/19 11:20, , 5F
何不直接貼上來, 或者用置底網站貼完放個網址上來@_@"
05/19 11:20, 5F

05/19 12:00, , 6F
stack爛掉就是ebp跟return addr內容被破壞
05/19 12:00, 6F

05/19 12:02, , 7F
另外你要取得function下道指令的位址,可以插組語取得
05/19 12:02, 7F

05/19 12:02, , 8F
ebp+4(linux應該跟windows一樣吧)的值
05/19 12:02, 8F

05/19 13:21, , 9F
不得不承認, 跟Linux完全不熟Orz Linux下有像VC這樣方便
05/19 13:21, 9F

05/19 13:21, , 10F
的debug工具用嗎, 這點小弟真的是有點過份依賴工具了Orz
05/19 13:21, 10F

05/19 13:39, , 11F
gdb功能還蠻強的,不過忘了能不能看stack
05/19 13:39, 11F

05/19 16:09, , 12F
應該可以吧 ... Eclipse CDT看得到說 @@a
05/19 16:09, 12F

05/20 12:43, , 13F
gdb看stack的指令就info stack或是backtrace啊
05/20 12:43, 13F
文章代碼(AID): #1ByrIat4 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ByrIat4 (C_and_CPP)