Вывести строку, начинающуюся с NUL, в GDB - PullRequest
4 голосов
/ 16 сентября 2011

У меня есть строка, которая начинается с символа \0 - это по замыслу, и я знаю ее фактическую длину.

Как я могу распечатать его представление с помощью экранированных символов, таких как "\0foo\0bar\0", если я знаю его длину

Ответы [ 2 ]

6 голосов
/ 16 сентября 2011

Ну, вы должны быть в состоянии распечатать его как массив:

print *str@length

0 голосов
/ 16 сентября 2011

Вы можете использовать команду GDB printf.

Вам просто нужно напечатать char *, увеличенный на единицу, чтобы у вас не было символа 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
...