打印以gdb中的NUL开头的字符串

时间:2011-09-16 11:32:12

标签: c debugging gdb

我有一个以字符\0开头的字符串 - 它是设计的,我知道它的实际长度。

如果我知道它的长度,如何使用"\0foo\0bar\0"之类的转义打印其表示?

2 个答案:

答案 0 :(得分:6)

嗯,您应该能够将其打印为数组:

print *str@length

答案 1 :(得分:0)

您可以使用GDB printf命令。

你只需要打印char *,加1,这样你就没有NULL字符。

如果您有以下代码:

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

使用以下命令编译您的程序:

gcc -Wall -g -o test test.c

然后运行GDB:

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