gdb练习
文章平均质量分 52
csdn_dzh
一些点滴的记录
展开
-
gdb函数相关7——选择函数堆栈帧
测试代码#include <stdio.h>int func1(int a) { return 2 * a;}int func2(int a) { int c = 0; c = 2 * func1(a); return c;}int func3(int a) { int c = 0; c = 2 * func2(a); return c;}int ...原创 2018-11-28 21:12:29 · 420 阅读 · 0 评论 -
gdb入门实例2——断点调试实例
测试代码#include <stdio.h>int main (int argc, char *argv[]) { int sum = 0, i = 0; char input[5]; while (1) { scanf("%s", input); for (i = 0; input[i] != '\0'; ++i) sum = sum * 10 +...原创 2018-12-03 10:43:29 · 419 阅读 · 0 评论 -
gdb函数相关6——打印尾调用堆栈帧信息
测试代码#include <stdio.h>void a() { printf("Tail call frame\n");}void b() { a();}void c() { b();}int main (int argc, char *argv[]) { c(); return 0;}测试过程当一个函数最后一条指令原创 2018-11-28 20:52:21 · 435 阅读 · 0 评论 -
gdb函数相关5——打印函数堆栈帧信息
测试代码#include <stdio.h>void func(int a, int b) { int c = a * b; printf("c = %d\n", c);}int main (int argc, char *argv[]) { func(1, 2); return 0;}测试过程使用gdb调试程序时,可以使用info ...原创 2018-11-28 20:36:25 · 1098 阅读 · 0 评论 -
gdb函数相关4——直接执行函数
测试代码#include <stdio.h>int global = 1;int func() { return (++global);}int main (int argc, char *argv[]) { printf("%d\n", global); return 0;}测试过程调试程序时,可以使用call或者print命令直...原创 2018-11-28 20:28:12 · 4059 阅读 · 0 评论 -
gdb函数相关3——退出正在调试的函数
测试代码#include <stdio.h>int func() { int i = 0; i += 2; i *= 10; return i;}int main (int argc, char *argv[]) { int a = 0; a = func(); printf("%d\n", a); re...原创 2018-11-28 20:22:52 · 6063 阅读 · 0 评论 -
gdb函数相关2——是否进入带调试信息的函数
测试代码#include <stdio.h>int func() { return 3;}int main (int argc, char *argv[]) { int a = 0; a = func(); printf("%d\n", a); return 0;}测试过程使用ne原创 2018-11-28 20:01:38 · 361 阅读 · 0 评论 -
gdb函数相关1——列出函数的名字
测试代码#include <stdio.h>#include <pthread.h>#include <unistd.h>void *thread_func(void *p_arg) { while (1) { sleep(10); }}int main (int argc, char *argv[]) { pthread_t原创 2018-11-28 19:49:23 · 4536 阅读 · 0 评论 -
Linux下gdb调试
一、Part11.1 测试代码#include <stdio.h>int g_var = 0;int add(int a, int b) { printf("add callad, a: %d, b: %d \n", a, b); return a + b;}int main(int argc, char *argv[]) { int n = ...原创 2018-11-15 17:09:14 · 271 阅读 · 0 评论 -
gdb打印信息1——打印STL和数组中的内容
一、打印vector内容测试代码#include<iostream>#include<vector>using namespace std;int main(int argc, char* argv[]){ vector<int> vec(10); // 10 zero-initialized elements for (int i =...原创 2018-12-04 23:43:16 · 1075 阅读 · 0 评论 -
gdb入门实例1——单步执行和跟踪函数调用分析实战
测试代码#include <stdio.h>int add_range(int low, int high) { int i, sum; for (i = low; i <= high; ++i) { sum += i; } return sum;}int main (int argc, char *argv[]) { int result[100...原创 2018-11-30 10:09:57 · 1071 阅读 · 0 评论 -
gdb观察点相关2——设置读观察点和读写观察点
一、设置读观察点1.1 设置读观察点测试代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;pthread.h&amp;gt;#include &amp;lt;unistd.h&amp;gt;int a = 0;void *thread1_func(void *p_arg) { while (1) { printf(&am原创 2018-11-29 13:20:38 · 972 阅读 · 0 评论 -
gdb观察点相关1——设置观察点以及设置观察点只对特定线程生效
一、设置观察点1.1 设置观察点测试代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;pthread.h&amp;gt;#include &amp;lt;unistd.h&amp;gt;int a = 0;void *thread1_func(void *p_arg) { while (1) { a++; slee原创 2018-11-29 13:05:59 · 709 阅读 · 0 评论 -
gdb断点相关3——临时断点、条件断点、忽略断点
一、临时断点1.1临时断点测试代码#include &lt;stdio.h&gt;#include &lt;pthread.h&gt;typedef struct { int a; int b; int c; int d; pthread_mutex_t mutex;}ex_st;int main (int argc, char *argv[]) { ex_st ...原创 2018-11-29 12:26:54 · 4728 阅读 · 1 评论 -
gdb断点相关——在行号打上断点以及保存设置的断点
测试代码#include &amp;lt;stdio.h&amp;gt;int func() { return 3;}int main (int argc, char *argv[]) { int a = 0; a = func(); printf(&quot;%d\n&quot;, a); return 0;}测试过程在打完一原创 2018-11-29 11:52:28 · 792 阅读 · 0 评论 -
gdb函数相关8——向上或向下切换函数堆栈帧
测试代码#include &lt;stdio.h&gt;int func1(int a) { return 2 * a;}int func2(int a) { int c = 0; c = 2 * func1(a); return c;}int func3(int a) { int c = 0; c = 2 * func2(a); return c;}int ...原创 2018-11-28 21:20:34 · 2621 阅读 · 0 评论 -
gdb打印信息2——打印内存的值以及使用$_
测试代码#include <stdio.h>int main (int argc, char *argv[]) { int i = 0; char a[100]; for (i = 0; i < sizeof(a); ++i) { a[i] = i; } return 0;}测试过程首先打上断点,跑起来这样,就完成了赋值操作然后就可以...原创 2018-12-07 14:39:41 · 1617 阅读 · 0 评论