7

float の幅 8 の長い 2D 配列の書式設定された出力を取得しようとしています。コマンドを使用するxと、配列が 4 列のテーブルとして出力されます。

(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と、フォーマットされていない出力、端末の幅が得られます。

(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   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}

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

4

1 に答える 1

-1

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))

于 2012-10-18T21:13:54.333 に答える