0
Windbgにはdpp
コマンドがあります。これはメモリ内の値をポインタとして解釈し、ポインタが指し示しているものを出力します。以下に示す:GDBは内容をポインタ型の値として表示できますか?
私の質問は、GDBは、同様の機能を持っているんですか?
Windbgにはdpp
コマンドがあります。これはメモリ内の値をポインタとして解釈し、ポインタが指し示しているものを出力します。以下に示す:GDBは内容をポインタ型の値として表示できますか?
私の質問は、GDBは、同様の機能を持っているんですか?
gdbコマンドラインでは、アドレスをポインタ値にキャストできます。
(gdb) list
1 #include <stdio.h>
2
3 char * m = "this is a test\n";
4
5 main()
6 {
7 printf("%s",m);
8 }
(gdb) b 7
Breakpoint 1 at 0x400531: file example.c, line 7.
(gdb) r
Starting program: /tmp/example
Breakpoint 1, main() at example.c:7
7 printf("%s",m);
(gdb) p m
$1 = 0x4005d4 "this is a test\n"
(gdb) p *(char*)0x4005d4
$2 = 116 't'
(gdb) p *(int*)0x4005d4
$3 = 1936287860
(gdb) p *(double**)0x4005d4
$5 = (double *) 0x2073692073696874
最後の2つは値がchar *なのでゴミです。
dumpコマンドは、16進値を調べる場合にも便利です。
(gdb) x/20c m
0x4005d4: 116 't' 104 'h' 105 'i' 115 's' 32 ' ' 105 'i' 115 's' 32 ' '
0x4005dc: 97 'a' 32 ' ' 116 't' 101 'e' 115 's' 116 't' 10 '\n' 0 '\000'
0x4005e4: 37 '%' 115 's' 0 '\000' 0 '\000'
本当に近いとは言えません。 GDBはスクリプトの作成をサポートしていますか? –
はい。以下はpythonを使用した例です。http://stackoverflow.com/questions/39069090/debugger-gdb-evaluate-expression/39132967#39132967 –