2011-09-16 111 views
4

我有一個以字符\0開頭的字符串 - 它是有設計意義的,我知道它的實際長度。在gdb中以NUL開頭的打印字符串

如果我知道它的長度,如何使用像"\0foo\0bar\0"這樣的轉義來打印它的表示?

回答

6

那麼,你應該能夠打印一個數組:

print *[email protected]

+0

+1,因爲這實際上可以在整個打印NULL邊界。 – gamen

+0

+1也只是我想要的,不多也不少。 – Flavius

+1

@gamen:不要將NULL與NULL混淆。前者是一個角色,後者是一個指針。 – Flavius

0

您可以使用GDB printf命令。

你只需要打印char *,加1,所以你沒有NULL字符。

如果你有下面的代碼:

gcc -Wall -g -o test test.c 

然後運行GDB:

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

與編譯程序

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