Linux下使用gdb进行C-C++程序调试第一讲

举报
墨理学AI 发表于 2022/01/11 00:34:19 2022/01/11
【摘要】 意外发现一篇–大佬早期撰写的–用GDB调试程序 – 命令非常详尽 认识 gdb gdb 工具 可以在Linux 中对 C、C++代码进行调试 安装 gdb 使用 具备 sudo 权限的用...

意外发现一篇–大佬早期撰写的–用GDB调试程序 – 命令非常详尽

认识 gdb

gdb 工具 可以在Linux 中对 C、C++代码进行调试

安装 gdb

使用 具备 sudo 权限的用户 执行如下命令进行安装,普通用户即可使用;

sudo apt install gdb

  
 
  • 1

一个C程序 使用 gdb 进行debug 调试

vim string.c

  
 
  • 1

程序内容如下,第9行 使用了 没有初始化 的变量 string ;

#include<stdio.h>
#include<stdlib.h>
static char buff [256];
static char * string;

int main(){

	printf("Hello zhijian");
	printf("%s\n", string);


	return 0;

}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 普通的 gcc 编译运行效果如下:
gcc -o moli.o string.c 
./moli.o 

输出如下:我们很难直接定位错误的位置
Segmentation fault (core dumped)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 使用 gdb 命令来进行调试
gcc -o bug -ggdb string.c 

装入bug 可执行文件,进入调试模式
gdb bug

执行命令顺序如下:
l
run
where
quit

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 操作效果如下:

9
定位到报错位置,我们更容易推断出错误原因:string变量没有赋初值

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/114174844

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。