[英]Javascript debuggers (Chrome and Webstorm) always break at non-existent breakpoint
[英]GDB comparing an existent character with a non-existent character?
我目前正在嘗試磨練我在GDB中讀取匯編的技能,並且在嘗試讀取GDB中的字符時遇到了一些怪異,但我不確定會發生什么。
在某些情況下,我正在查看的文件已編譯,盡管代碼是用c編譯的,但是沒有.c函數。 它本質上是一個“炸彈”分配文件,需要特定的輸入才能到達代碼的下一部分,並且此代碼來自根據答案的要求測試其中一個輸入。
包含我要讀取的字符的代碼如下:
cmp -0x1(%rbp),%al
je 0x400acf <nextpartofcode>
我正在嘗試讀取-0x1(%rbp),所以我輸入了print/c $rbp-1
來嘗試查看它,並打印出GDB: 175 '\\257'
。 假定此輸出表示如果將ASCII字符175放入,則比較將成功,但是,當我輸入字符(看起來像>>)時,它顯示為-62 '\\302'
。
我還嘗試將值讀取為整數,八進制值,十進制值,字符串和十六進制值,並且獲得了相同的成功率,但是我迷失了其他嘗試方法。 這里到底發生了什么? 我是否在錯誤的位置(即-0x1(%rbp)而不是$ rbp-1)? 我是不是在看價值而不是價值(我被告知應該是一個字符,但還有其他東西)嗎? 我應該在其他地方尋找價值嗎? 我被困住了,我將不勝感激。
$rbp-1
是地址; 您需要取消引用它。 (使用GDB的x
命令在一個地址處檢查內存,或使用C語法取消引用print
指針,例如p /c *(char*)($rbp-1)
。
您將地址的低字節打印為字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.