2016-11-11 8 views
0

構造体へのポインタがあり、print /x (*s)を使用してgdbで印刷できます。gdb:構造体に関連付けられたすべてのメモリを表示する方法

...、強度= 2 '\ 002'}、{distance_2cm = 3045、強度= 3 '\ 003'}、{distance_2cm = 14735、強度= 7:

しかしこれは私を与えます'distance_2cm = 14272、intensity = 7' \ a '}、{distance_2cm = 3735、intensity = 2' \ a2 '} {距離2cm = 14617、輝度= 6'006}、{距離2cm = 4239、強度= 2'002'}、{距離_2cm = _9741、輝度= 5'00510}、{距離_2cm = 4892、輝度= 2 '\ 002'}、{distance_2cm = 10686、intensity = 4 '\ 004' }、{distance_2cm = 6012、intensity = 3 '\ 003'}、{distance_2cm = 9906、i {002}}、{distance_2cm = 0、inte nsity {3} \ 003 '}}}、{head = {laser_block_id = 61183、rotation_theta = 21191}、lasers_arary = {{distance_2cm = 0、intensity = 2' = 1 '\ 001'}、{distance_2cm = 0、intensity = 3 '\ 003'}、{distance_2cm = 0、intensity = 1 '\ 001'}、{distance_2cm = 0、intensity = 2 '\ 002'} {距離2cm = 0、強度= 2'002'}、{距離_2cm = 0、強度= 1'001'}、{距離_cm_2cm = 6426、強度= 1'001'}、{距離_2cm =強度= 3 '\ 003'}、{距離_2cm = 6584、強度= 2 '002'}、{距離_2cm = 2154、強度_3'003'}、{距離_2cm = 0、強度= {distance_2cm = 2428、intensity = 2 '\ 002'}、{distance_2cm = 0}、{distance_2cm = 2282, 、intensity = 3'003'} 26580、in {距離_2cm = 2795、輝度= 3 '\ 003'}、{距離_2cm = 2592、輝度= 5'005'}、{距離_2cm = 27180、輝度= 2 7'033} {距離2cm = 14712、輝度= 22 '\ 026'}、{距離_2cm = 3342}、{距離_2cm = 0、強度_2'002}、{距離_2cm = 3045 、強度= 3'003'}、{強度= 3 '\ 003'}、{ 距離_2cm = 14181、強度= 7''a '}、{距離_2cm = 3729、強度= 2'002'}、{距離_2cm = 14474、強度_ty = 6'\距離 '= 002'}、{距離_2cm = 9744、強度= 1'\ 001 '}、{距離_2C m = 4887、強度= 2'002'}、{距離_2cm = 4228、 = 13075、intensity = 7 '\ a'}、{distance_2cm = 5994、intensity = 3 '\ 003 '}、{distance_2cm = 9947、intensity = 4 '\ 004'}}}、{head = {laser_block_id = 61183 、rotation_theta = 21207}、l asers_ arary = {{距離2cm = 0、強度= 2'002'}、{距離_2cm = 0、強度= 1'001'}、{距離_2cm = 0、int_ity'3'003'}、{距離2cm = 0、輝度= 1 '\ 001'}、{距離2cm = 0、強度= 2'002}、{距離_2cm = 0 、輝度= 2'002'}、{距離_2cm = 0、輝度= 1距離 '= 001'}、{距離_2cm = 0、強度= 1'001'}、{距離 _2cm = 2038、強度= 6'\ 006 '}、{距離_2cm = 6548、強度= {distance_2cm = 2185、intensity = 3 '\ 003'}、{distance_2cm = 0、inte {距離2cm = 2428、強度= 2 '\ 002'}、{距離_2cm = 26498、強度= 33 '}のように、'}、{distance_2cm = 2792、intensity = 3 ' \ 003 '} {distance_2cm = 2590、intensity = 5' \ 005 '}、 {距離2cm = 3344、強度= 3 '}、{距離2cm = 3044、強度= 3'003}、{距離_2cm = 14743, 強度= 7''a'}、 \ 002 '}、{distance_2cm = 14520、intensity = 13' \ r '}、{003}}、{distance_2cm = 14147、intensity = 7' \ a '}、{distan ce_2cm = 3728、intensity = 2'距離2cm = 4222、輝度= 2 '\ 002'}、{距離_2cm = 14567、輝度= 5'00510}、{距離_2cm = 4885、輝度= 3'003'}、{距離_2cm = 1 842、強度= 6 '\ 006'}、{distance_2cm = 5978、intensity = 3 '\ 003'}、{distance_2cm = 9964、intensity = 6'\ 006 '}} }}}、sd = {gps_time_stamp = 59467414、status_type = 55 '7'、STATUS_VALUE = 33}}

私は進で表示したい場合は、以下の仮定の出力のようなもの '!':

00000000: 2369 6e63 6c75 6465 203c 6368 6563 6b2e 
00000010: 683e 0a0a 2369 6e63 6c75 6465 2022 635f 
00000020: 7665 6c6f 6479 6e65 2f61 7267 7061 7273 
00000030: 652e 6822 0a23 696e 636c 7564 6520 2263 

でこれを行う方法はありますgdb?

答えて

3

これはxコマンドで実行できます。最も簡単な方法は、最初に構造体のサイズを見つけて、これを引数としてxに渡すことです。

(gdb) print sizeof(whatever) 
$1 = 1024 
(gdb) x/512xh &whatever 

デコードx/512xh:ような何かあなたの例は、単語ごとに2つのバイトを示したので、

  • 512は、ここでは繰り返し回数、構造の半分のサイズです。
  • xは、16進数での印刷を意味します。
  • は、「ハーフワード」、別名2バイトを意味します。

gdbマニュアルでは、ここで使用できるすべてのフラグについて説明しています。

あなたは長さを計算するためにevalを使用してより美しい方法でこれを行うことができます。これをたくさんしているのであれば、おそらく少しの処理をしてからxを呼び出す新しいコマンドをPythonで書くことをお勧めします。

+0

私の投稿にちょうどコメントしていた。 x/22xb sldは私が必要としたことをしました。私はマニュアルを誤解しています。 –

関連する問題