2012-08-30 3 views
6

私はfloatの幅8の長い2D配列の書式付き印刷を取得しようとしています。GDBメモリの検査(x)または印刷(p)コマンドの幅を設定する方法は?

(gdb) p/f *(0x81000000)@16 
$27 = {0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0} 

必須:

(gdb) x/16f 0x81000000 
0x81000000: 0 0 1 0 
0x81000010: 2 0 3 0 
0x81000020: 4 0 5 0 
0x81000030: 6 0 7 0 

pコマンドを使用して、私はフォーマットされていない出力端子の幅を取得:xコマンドを使用する場合、私は、アレイは、4列の表として印刷します出力、のようなもの:

(gdb) x/16f 0x81000000 
0x81000000: 0 0 1 0 2 0 3 0 
0x81000020: 4 0 5 0 6 0 7 0 

か:

(gdb) p/f *(0x81000000)@16 
$27 = {0, 0, 1, 0, 2, 0, 3, 0, 
     4, 0, 5, 0, 6, 0, 7, 0} 

特定の幅の出力を簡単にフォーマットする方法はありますか?

答えて

0

使用Pythonスクリプト:

かなりあいまいな場合、私は、これはかなり近いと思う:

python print "\n".join(", ".join(gdb.execute('x/f 0x%x' % a, False, True).split()[-1] for a in range(s, s+32, 4)) for s in range(0x81000000, 0x81000040, 32))

+0

感謝。私はPythonに全く慣れていません。これをgdbプロンプトに入力する必要がありますか? – ysap

関連する問題