2011-07-07 18 views
1

私は読み取り専用のメモリに書き込む可能性のあるプログラムをデバッグしていますが、メモリは実際には読み取り専用としてマークされます。gdb:メモリの一部が読み取り専用であるかどうかを確認する方法

gdbでその決定を下すことはできますか?そうでない場合、私は何を使うことができますか?

+0

データ整列の問題によりsegfaultが終了しました。私はそれの根本原因を突き止めていませんでしたが、 'st%g1、[%g2]' ....これは 'g2'レジスタにアドレス' 0x602bf53e'を含んでいます。そのアドレスに32ビットの数量を格納しようとしていますが、32ビットの境界には収まらないのです。 –

答えて

2

Solarisでは、pmapコマンドを使用してプロセスのアドレス空間を見ることができます。 pmap <pid>。これにより、各マッピングのr/w/x権限が表示されます。他の情報と一緒に。 Solarisのマニュアルページから

例:pmappmemツールに

 
$ 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 
1

ルック。

関連する問題