gdb -q ./main (gdb) b main_01.cpp:5 Breakpoint 1 at 0x655: file main_01.cpp, line 5. (gdb) b main_01.cpp:12 Breakpoint 2 at 0x687: file main_01.cpp, line 12. (gdb) r Starting program: /data/code/cpp/test/gdb_test/main
Breakpoint 1, func () at main_01.cpp:5 5 return i; (gdb) p i $1 = 2 (gdb) set var i = 8 # 设置变量的值 (gdb) p i $2 = 8
(gdb) p &i $3 = (int *) 0x7fffffffd57c (gdb) set {int}0x7fffffffd57c = 10 # 通过地址设置变量的值 (gdb) p i $4 = 10
Breakpoint 1, main () at main_01.cpp:5 5 char str1[] = "abcd"; (gdb) n 6 wchar_t str2[] = L"abcd"; (gdb) n 7 return 0; (gdb) set main::str1 = "ok" (gdb) set main::str2 = "yes" (gdb) n 8 } (gdb) p str1 $2 = "ok\000\000" (gdb) p str2 $3 = L"\x736579\000\000\000" (gdb) x/s str1 0x7fffffffd593: "ok" (gdb) x/ws str2 0x7fffffffd570: U"\x736579" (gdb) x/s str2 0x7fffffffd570: "yes"
也可以通过访问内存地址的方法改变字符串的值
1 2 3 4 5 6 7 8 9 10
(gdb) p p1 $3 = "abcd" (gdb) p &p1 $4 = (char (*)[5]) 0x7fffffffd593 (gdb) set {char [5]} 0x7fffffffd593 = "ACE" (gdb) n 7 printf("p1 is %s, p2 is %s \n", p1, p2); (gdb) n p1 is ACE, p2 is YES 8 return 0;