zoukankan      html  css  js  c++  java
  • [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
    
    

  • 相关阅读:
    15 个 Android 通用流行框架大全
    android将drawable下的图片转换成bitmap
    android横屏布局文件设置
    高级运维(五):构建memcached服务、LNMP+memcached、使用Tomcat设置Session、Tomcat实现session共享
    高级运维(四):Nginx常见问题处理、安装部署Tomcat服务器、使用Tomcat部署虚拟主机
    高级运维(三):部署Lnmp环境、构建Lnmp平台、地址重写
    高级运维(二):搭建Nginx服务器、用户认证、基于域名的虚拟主机、SSL虚拟主机、Nginx反向代理
    高级运维(一):反向代理&使用Varnish加速Web
    Linux 软硬链接区别
    Linux 常用的一些操作
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787027.html
Copyright © 2011-2022 走看看