• [GDB7] gdb 的学习


    @学习摘录 701:GDB 简介
      gdb常用命令包括,文件载入,断点设置与管理,数据显示,变量赋值,程序执行,函数调用等。
    』GDB 调试器的功能就是让程序员在程序运行过程中了解程序的内部结构和内存的使用情况,以及
      程序崩溃时状态,具体包括以下几个方面 :
       * 在程序中设置断点,使其在指定的代码行上暂停执行。
       * 查看或修改程序中变量的值。
       * 单步执行程序代码。     安装gdb : tar -zxvf gdb-6.8.tar.bz2
    @学习摘录 702:GDB 启动和退出  
       前话 : $ gcc -g example1.c -o example1
       gdb 的启动和退出   gdb可以自动识别命令的简写!!!
       $ gdb  (进入)
        quit (简写 q)
    @学习摘录 703:载入程序  列出源代码 (gdb)list  执行程序 (gdb)run   帮助 (gdb)help
     $ gdb example1            (gdb) l 3, 5           (gdb) r
    @学习摘录 704:断点的设置与管理  (gdb) b 9  (gdb) r  (gdb) c 【continue 继续】
      break 命令后也可以跟函数名,使程序在进入指定的函数之前停下来。设置断点时,也可以进行条件判断。
    	int main() {
    		int x;
    		int sum;
    		sum = 0;
    		for(x = 1; x <= 10; x++) {
    			sum += x;
    		}
    		printf("%d\n", sum);
    		return 0;
    	}
      (gdb)b 9 if x > 9
     2,-- 查看断点信息 (gdb) info break
     3,-- 删除指定的断点
      (gdb) d 1
      (gdb) d 1-6
     4,-- 删除指定行上的断点 clear (gdb) clear 9
     5,-- 禁用指定的断点,(gdb)disable 1 恢复指定的断点。 enable 1
     6,-- 设置观察点 『 watch sum
             watch 命令是当变量或表达式的值发生变化时暂停程序的运行,如果想在变量或表达式
             被读时暂停程序的运行,可以使用 rwatch 命令;如果想在变量或表达式被读或被写时
             暂停程序的运行,可以使用 awatch.
           info watchpoints
           delete 命令来删除指定的观察点。
    @学习摘录 705:数据显示与变量赋值
     7,-- 显示变量或表达式的值
    #include <stdio.h>
    
    int sum;
    void printinfo() {
    	printf("1+2+3+4+...+10 = ");
    }
    int main() {
    	int x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    	int i;
    	sum = 0;
    	for(i = 0; i < 10; i++) {
    		sum += x[i];
    	}
    	printinfo();
    	printf("%d\n", sum);
    	return 0;
    }      
      ---- (gdb) p sum
           (gdb) p/x sum
           (gdb) 'example2.c'::sum
           (gdb) p *x@8
      -2, 自动显示变量或者表达式的值 {
             display sum
             disable display, enable display, undisplay, delete display, info display
             info display
      }
      -3, 显示变量的数据类型
       (gdb) whatis x
       type = int [10]
       (gdb) ptype sum
       type = int
      -4, 修改变量的值
         (gdb)set sum = 100
         (gdb)p sum
         (gdb)p x[2] = 16
         (gdb)p x
    @学习摘录 706:程序执行与函数调用
       -1, 单步执行
         (gdb)r
         (gdb)s/n
         (gdb)s/n
       -2, 退出被调用的函数  return
       -3,until jump
       -4, 强制调用函数
           01 (gdb) call printf("Beginning!\n")
           02 Beginning!
           03 $8 = 11
    @学习摘录 707:其他常用命令
       GDB 的命令很多。
      1, 查看堆栈信息
          backtrace命令(简写为 bt) 和 frame 命令 (简写为 f)
          (gdb) bt
          (gdb) f 1 frame 是用来显示栈帧的,后面跟栈帧的编号。
      2, 查看源程序信息。 (gdb) info source
      3, 查看寄存器。     (gdb) info registers
      4, 查看程序的汇编代码(gdb) disassemble printinfo
    
    

  • 相关阅读:
    Inno Setup执行SQL脚本的方法
    批处理命令篇--配置免安装mysql
    nsis安装包_示例脚本语法解析
    全方位掌握nsis脚本
    dos批处理知识
    mysql alter 语句用法,添加、修改、删除字段等
    .Net WebAPI 增加Swagger
    CentOS 7 Docker
    四:Ionic Framework不支持Android4.2.2的解决方法
    二:Ionic Framework支持Android开发
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787027.html
Copyright © 2020-2023  润新知