摘要: 打印函数局部变量的值 1.例子: #include <stdio.h> void fun_a(void) { int a = 0; printf("%d\n", a); } void fun_b(void) { int b = 1; fun_a(); printf("%d\n", b); } voi 阅读全文
posted @ 2023-10-16 22:54 苏格拉底的落泪 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 在匿名空间设置断点 1. 例子 namespace Foo { void foo() { } } namespace { void bar() { } } 在gdb中,如果要对namespace Foo中的foo函数设置断点,可以使用如下命令: (gdb) b Foo::foo 如果要对匿名空间中的 阅读全文
posted @ 2023-10-16 22:46 苏格拉底的落泪 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 参考资料 1. 使用backtrace获取堆栈信息 2. How to print a stack trace whenever a certain function is called 阅读全文
posted @ 2023-10-16 21:46 苏格拉底的落泪 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 为fork调用设置catchpoint 1.例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); 阅读全文
posted @ 2023-10-16 19:36 苏格拉底的落泪 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 为exec调用设置catchpoint 1. 例子: #include <unistd.h> int main(void) { execl("/bin/ls", "ls", NULL); return 0; } 使用gdb调试程序时,可以用catch exec命令为exec系列系统调用设置catch 阅读全文
posted @ 2023-10-16 19:11 苏格拉底的落泪 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 为vfork调用设置catchpoint 1.例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = vfork() 阅读全文
posted @ 2023-10-16 19:06 苏格拉底的落泪 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 同时调试父进程和子进程 1. 参考资料 1. gdb手册 2. 同时调试父进程和子进程 阅读全文
posted @ 2023-10-16 11:13 苏格拉底的落泪 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 设置读写观察点 1.例子: #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } 阅读全文
posted @ 2023-10-16 10:16 苏格拉底的落泪 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 设置读观察点 1. 例子 #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } 阅读全文
posted @ 2023-10-16 10:12 苏格拉底的落泪 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 设置观察点只针对特定线程生效 1. 说明 #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(1 阅读全文
posted @ 2023-10-16 09:48 苏格拉底的落泪 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 显示gdb版权相关信息 使用gdb时,如果想查看gdb版权相关信息,可以使用“show copying”命令: (gdb) show copying GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free 阅读全文
posted @ 2023-10-16 09:41 苏格拉底的落泪 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 设置观察点 1. 例子 #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } i 阅读全文
posted @ 2023-10-16 09:27 苏格拉底的落泪 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 输出信息多时不会暂停输出 有时当gdb输出信息较多时,gdb会暂停输出,并会打印“ Type <return> to continue, or q <return> to quit ”这样的提示信息,如下面所示: 81 process 2639102 0xff04af84 in __lwp_park 阅读全文
posted @ 2023-10-16 09:20 苏格拉底的落泪 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 退出时不显示提示信息 gdb在退出时会提示: A debugging session is active. Inferior 1 [process 29686 ] will be killed. Quit anyway? (y or n) n 如果不想显示这个信息,则可以在gdb中使用如下命令把提示 阅读全文
posted @ 2023-10-16 09:18 苏格拉底的落泪 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 启动时不显示提示信息 $ gdb GNU gdb (GDB) 7.7.50.20140228-cvs Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http: 阅读全文
posted @ 2023-10-16 09:15 苏格拉底的落泪 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 显示gdb版本信息 使用gdb时,如果想查看gdb版本信息,可以使用show version命令: (gdb) show version GNU gdb (GDB) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPL 阅读全文
posted @ 2023-10-16 09:13 苏格拉底的落泪 阅读(180) 评论(0) 推荐(0) 编辑