私は読み取り専用のメモリに書き込む可能性のあるプログラムをデバッグしていますが、メモリは実際には読み取り専用としてマークされます。gdb:メモリの一部が読み取り専用であるかどうかを確認する方法
gdbでその決定を下すことはできますか?そうでない場合、私は何を使うことができますか?
私は読み取り専用のメモリに書き込む可能性のあるプログラムをデバッグしていますが、メモリは実際には読み取り専用としてマークされます。gdb:メモリの一部が読み取り専用であるかどうかを確認する方法
gdbでその決定を下すことはできますか?そうでない場合、私は何を使うことができますか?
Solarisでは、pmapコマンドを使用してプロセスのアドレス空間を見ることができます。 pmap <pid>
。これにより、各マッピングのr/w/x権限が表示されます。他の情報と一緒に。 Solarisのマニュアルページから
$ pmap 102905 102905: sh 00010000 192K r-x-- /usr/bin/ksh 00040000 8K rwx-- /usr/bin/ksh 00042000 40K rwx-- [ heap ] FF180000 664K r-x-- /usr/lib/libc.so.1 FF236000 24K rwx-- /usr/lib/libc.so.1 FF23C000 8K rwx-- /usr/lib/libc.so.1 FF250000 8K rwx-- [ anon ] ... total 1880K
ルック。
データ整列の問題によりsegfaultが終了しました。私はそれの根本原因を突き止めていませんでしたが、 'st%g1、[%g2]' ....これは 'g2'レジスタにアドレス' 0x602bf53e'を含んでいます。そのアドレスに32ビットの数量を格納しようとしていますが、32ビットの境界には収まらないのです。 –