2011-09-16 10 views
4

文字で始まる文字列があります。\0 - 実際の長さはわかりました。gdbのNULで始まる印刷文字列

長さが分かっている場合は、"\0foo\0bar\0"のようなエスケープを使用して表現を印刷するにはどうすればよいですか?

答えて

6

さて、あなたは配列としてそれを印刷することができる必要があります:

print *[email protected]

+0

1:GDBを実行し

gcc -Wall -g -o test test.c 

int main(void) { char * s1 = "abcd"; char * s2 = "\0abcd"; return 0; } 

をして、あなたのプログラムをコンパイルします境界。 – gamen

+0

+1も私が望んでいたものであった。 – Flavius

+1

@gamen:NULとNULLを混同しないでください。前者は文字、後者はポインタです。 – Flavius

0

あなたはGDBのprintfコマンドを使用することができます。

char *を1つインクリメントして印刷するだけで、NULL文字は表示されません。

次のコードがある場合:これは実際にNULL渡って印刷することができますので、

gdb test 
(gdb) break main 
(gdb) run 
Breakpoint 1 at 0x100000f04: file test.c, line 3. 
(gdb) si 
1  char * s1 = "abcd"; 
(gdb) si 
2  char * s2 = "\0abcd"; 
(gdb) printf "%s", s1 
abcd 
(gdb) printf "%s", s2+1 
abcd