1

Snow Leopard 用の MacPorts 経由でコンパイルされた GDB 7.1 を使用して、バイナリ (アセンブリのみ) をデバッグしています。findgdb コマンドを使用して見つけた特定のアドレスに興味があります。したがって、それは実際に有効なアドレスです。

(gdb) printf "%s\n", 0x00196f34
bruno
(gdb)

問題は、ウォッチポイントを設定して ( watch *0x00196f34) アクセスすると、システムがクラッシュしてすぐに再起動することです。

ハードウェア ウォッチポイントが有効になっていることに気付き、それほど重大な結果が得られないことを期待して、使用するソフトウェア ウォッチポイントに切り替えましたset can-use-hw-watchpoints 0が、問題は解決しませんでした。

Xcodegdb 6.3に付属のバージョンを使用しようとしましたが、正常に動作します。このような時計を 6.3 と 7.1 の両方に設定したときに気付いた違いがあります。

gdb 6.3 の場合

(gdb) watch *0x00196f34
Watchpoint 1: *0x00196f34
(gdb) info breakpoints 
Num     Type           Disp Enb Address    What
1       watchpoint     keep y              *0x00196f34

gdb 7.1 の場合

(gdb) watch *0x00196f34
Hardware watchpoint 1: *1666868
(gdb) info breakpoints 
Num Type           Disp Enb Address    What
1   hw watchpoint  keep y              *1666868

新しい gdb がアドレスを 10 進数に変換しているのに、動作する古い gdb が 16 進数で出力されるのはなぜですか? 私はまだgdb 7で作業したいので、ここで何が起こっているのか手がかりはありますか?

ブルーノ・ベラスコ

4

0 に答える 0