zoukankan      html  css  js  c++  java
  • GDB的调试器及调试方法

    GDB简介

    GNU Debugger,是GNU工程为GNU操作系统开发的调试器,但它的使用不局限于GNU操作系统,GDN可以运行在UNIX、linux甚至Microsoft Windows。GDB可以调试C、C++等语言编写的程序;被调试的程序可以跟GDB运行在同一台电脑,也可以运行在不同的电脑。使用GDB我们可以1)设置断点使程序停住2)监视或修改程序中变量的值3)跟踪代码执行过程

    gdb命令


    gdb调试举例

    用一段代码实现对一个整型数的反转功能,但输入100时,程序的输出结果却不正确。

    #include<stdio.h>
    void ShowRevertNum(int iNum)
    {
    	while(iNum > 10)
    	{
    		printf("%d",iNum%10);
    		iNum = iNum/10;
    	}
    	printf("%d
    ",iNum);
    }
    int main(void)
    {
    	int iNum;
    	printf("Please input a number:");
    	scanf("%d",&iNum);
    	printf("After revert:");
    	ShowRevertNum(iNum);
    }
    

    段错误调试

    #include<stdio.h>
    #include<string.h>
    
    #define BUFSIZE 256
    
    static char acBuf[BUFSIZE];
    static char *pStr;
    int main(void)
    {
    printf("Please input a string:");
    gets(pStr);
    printf("
    Your string is:%s
    ",pStr);
    }
    

    linux中,程序崩溃时,一般会产生core文件,记录进程退出前的状态,调试段错误问题,借助于该文件,课快速定位问题。可按一下步骤生成和使用core文件

    1)让系统产生core文件:ulimit -c num #设定core文件容量(num为数字,为0是不产生core文件)

    2)运行程序,让程序奔溃,从而产生core文件

    3)gdb配合core文件,定位问题: gdb 程序名 core 文件名;如 gdb segDemo core

  • 相关阅读:
    将new Date()的时间转换为常用时间格式
    封装通用的jsonp方式
    javascript实现手机震动API代码
    webstorm 2016.3.2 破解代码(免费)
    淘宝镜像在npm中执行的代码
    jQuery lazyload 懒加载
    uniapp小程序获取时间戳转换时间例子
    微信小程序解析HTML标签
    微信小程序之tab切换效果
    巧用weui.gallery(),点击图片后预览图片
  • 原文地址:https://www.cnblogs.com/Zzxin/p/13903634.html
Copyright © 2011-2022 走看看