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
    
    

  • 相关阅读:
    Android 数据存储四种方式
    Android 文件系统路径
    Android 修改R包名方法
    Android startActivity 页面跳转
    Android 硬件加速器及其问题小结 gif不显示
    Android 用户界面 ViewGroup(FrameLayout LinearLayout AbsoluteLayout RelativeLayout TableLayout)
    Android 中解决输入法挡住输入框的问题
    Android 调用系统自带应用
    Android onMeasure(widthSpec, heightSpec)
    Android Bitmap Caching Bitmaps(渣翻译)
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787027.html
Copyright © 2011-2022 走看看