zoukankan      html  css  js  c++  java
  • gdb入门

    下面是我自己写的一个测试用例 a.c

    #include<stdio.h>
    int add(int a,int b){
        return a+b;
    }
    int main(){
        int n=add(5,10);
        printf("n is %d
    ",n);
        n=n*n;
        printf("n is %d
    ",n);
        n=add(10,10);
        printf("n is %d
    ",n);
    return 0;}
    

    gdb调试过程
    gcc -g a.c -o result //如果想使用gdb调试,那么必须加入-g选项
    gdb result 进入gdb调试
    l (字母l)显示源码,如果没显示完,按回车继续显示剩下的
    b 7 在第七行设置断点
    r 运行程序,会在断点那里停下来
    p n 显示变量n的值
    n 执行下一行
    b 9 在第九行再次创建断点,9也可以改为函数名main
    condition 2 n==255 检测n的值为255时暂停运行
    c 从断点处继续运行
    cl 9 清除第九行断点
    s 单步调试,执行到下一断点

    高级命令
    高级命令

    gdb还有很多高级用法,如查看堆栈列表,分割窗口等,这里就不一一测试了。
    查询运行信息

    where/bt:查看当前运行的堆栈列表
    up/down:改变堆栈显示的深度
    set args:参数:指定运行时的参数
    show args:查看设置好的参数
    info program: 来查看程序的是否在运行,进程号,被暂停的原因。
    

    分割窗口

    layout:用于分割窗口,可以一边查看代码,一边测试
    layout src:显示源代码窗口
    layout asm:显示反汇编窗口
    layout regs:显示源代码/反汇编和CPU寄存器窗口
    layout split:显示源代码和反汇编窗口
    Ctrl + L:刷新窗口
    
  • 相关阅读:
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    白话之jsonp跨域原理分析
    crontab定时任务
    python模块之uuid
  • 原文地址:https://www.cnblogs.com/biaopei/p/7730657.html
Copyright © 2011-2022 走看看