2016-11-11 77 views
0

我有一个指向结构的指针,我可以使用print /x (*s)在gdb中打印它。gdb:如何查看与十六进制结构关联的所有内存

然而,这使我:

...,强度= 2 '\ 002'},{distance_2cm = 3045,强度= 3 '\ 003'},{distance_2cm = 14735,强度= 7 '\一个'},{DIS tance_2cm = 3345,强度= 3 '\ 003'},{distance_2cm = 14272,强度= 7 '\一个'},{distance_2cm = 3735,强度= 2 '\ 002'} ,{distance_2cm = 14617,intensity = 6'006'},{distance_2cm = 4239,intensity = 2'002'},{distance_2cm = 9741,intensity = 5'005'},{distance_2cm = 4892,intensity = 2'\ 002'},{distance_2cm = 10686,intensity = 4'\ 004' },{distance_2cm = 6012,intensity = 3'\ 003'},{distance_2cm = 9906,i ntensity = 3 '\ 003'}}},{头= {laser_block_id = 61183,rotational_theta = 21191},lasers_arary = {{distance_2cm = 0,强度= 2 '\ 002'},{distance_2cm = 0,INTE nsity = 1'\ 001'},{distance_2cm = 0,intensity = 3'\ 003'},{distance_2cm = 0,intensity = 1'\ 001'},{distance_2cm = 0,intensity = 2'\ 002'} ,{distance_2cm = 0,intensity = 2'002'},{distance_2cm = 0,intensity = 1'\ 001'},{distance_2cm = 2040,},{distance_2cm =强度= 3'\ 003'},{distance_2cm = 6584,intensity = 2 '\ 002'},{distance_2cm = 2154,intensity = 3'\ 003'},{distance_2cm = 0,intensity = 1'\ 001' },{distance_2cm = 2282, 强度= 3 '\ 003'},{distance_2cm = 0,强度= 1 '\ 001'},{distance_2cm = 2428,强度= 2 '\ 002'},{distan ce_2cm = 26580,in张力= 33'''},{distance_2cm = 2592,intensity = 5'\ 005'},{distance_2cm = 27180,intensity = 2 7'\ 033'},{distance_2cm = 2795,intensity = 3'\ 003' },{distance_2cm = 0,intensity = 2'\ 002'},{distance_2cm = 3045 ,intensity = 3'003'},{distance_2cm = 14712,intensity = 22'\ 026'},{distance_2cm = 3342,强度= 3 '\ 003'},{ distance_2cm = 14181,强度= 7 '\一个'},{distance_2cm = 3729,强度= 2 '\ 002'},{distance_2cm = 14474,的Intensi TY = 6“\ 006'},{distance_2cm = 4228,intensity = 2'\ 002'},{distance_2cm = 9744,intensity = 1'\ 001'},{distance_2c m = 4887,intensity = = 13075,强度= 7'\ a'},{distance_2cm = 5994,intensity = 3'\ 003 '},{distance_2cm = 9947,intensity = 4'\ 004'}}},{head = {laser_block_id = 61183 ,rotation_theta = 21207},1 asers_ arary = {{distance_2cm = 0,强度= 2 '\ 002'},{distance_2cm = 0,强度= 1 '\ 001'},{distance_2cm = 0,INTENS 两者均= 3 '\ 003'},{ distance_2cm = 0,intensity = 1'\ 001'},{distance_2cm = 0,intensity = 2'\ 002'},{distance_2cm = 0 ,intensity = 2'\ 002'},{distance_2cm = 0,intensity = 1 '\ 001'},{distance_2cm = 0,intensity = 1'\ 001'},{距离 _2cm = 2038,intensity = 6'\ 006'},{distance_2cm = 6548,intensity = 1'\ 001' {distance_2cm = 2146,强度= 3 ' \ 003'},{distance_2cm = 0,强度= 1 '\ 001'},{distance_2cm = 2285,强度= 3 '\ 003'},{distance_2cm = 0,INTE nsity = 1'\ 001'},{distance_2cm = 2428,intensity = 2'\ 002'},{distance_2cm = 26498,intensity = 33'!'},{distance_2cm = 2590,intensity = 5'\ 005'},{distance_2cm = 26177,intensity = 29'\ 035'},{distance_2cm = 2792,intensity = 3 '\ 003'},{distance_2cm = 0,强度= 2'\ 002'},{distance_2cm = 3044,intensity = 3'\ 003'},{distance_2cm = 14743, intensity = 7'\ a'},{distance_2cm = 3344,intensity = 3' \ 003' },{distance_2cm = 14147,强度= 7 '\一个'},{distan ce_2cm = 3728,强度= 2 '\ 002'},{distance_2cm = 14520,强度= 13 '\ r'},{ distance_2cm = 4222,intensity = 2 '\ 002'},{distance_2cm = 14567,intensity = 5'\ 005'},{distance_2cm = 4885,intensity = 3'\ 003'},{distance_2cm = 1 0842,intensity = 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

  • 512是重复计数,结构的这里一半大小,因为你的例子显示,每字2个字节;
  • x表示以十六进制打印;
  • h表示“半字”,又名2字节。

GDB的手册说明,可以在这里使用的所有标志。

您可以使用eval计算长度为你华丽的方式做到这一点。如果你这样做了很多,我会建议在Python中编写一个新的命令,做一些处理,然后调用x

+0

即将发表评论我的帖子。 x/22xb sld做了我所需要的。我只是误解了手册。 –