使用GNUgdb调试Linux CC++可执行程序查看出错源代码、设置断点

使用GNUgdb调试Linux CC++可执行程序查看出错源代码、设置断点,第1张

gdb是GNU开源组织发布的一个强大的Linux程序调试工具,比图形化的调试工具更强大,主要来调试C/C++语言程序。

Debug 版本的可执行程序包含调试信息,用于程序员调试程序。

Release 版本的可执行程序往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以方便用户使用。

用gcc/g++编译时,要加上-g选项生成debug版本的可执行程序,否则就无法使用gdb调试了。

r 表示开始run, 如果在运行的过程中发生了错误,比如segmentation fault,可以查看此时的出错源代码:

通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。

比如在function Peer_auto_save上设置断点,在peer.c的第136行设置断点:

从断点处继续运行

退出gdb

1.安装gcc等必备程序包,在cmake安装包的网站中选择binarydistribution下的linuxx86_64下的cmake-3.6.0-Linux-x8664.tar.gz压缩包,点击,下载。默认下载到了home/DOWNLOAD2.把下载好的包复制到指定路径,比如/home/bnu,在当前文件夹中打开终端,输入3.tarzxvfcmake-3.6.0-Linux-x8664.tar.gz在该目录下多了一个解压后的文件夹4.打开新的终端,./bootstrapmakemakeinstall5.此时会打开一个文件/root/.bashrc,找到exportPATH=这些行,在这些行的下面另外添加一行,从而设置环境变量exportPATH=$PATH:/home/bnu/cmake-3.6.0-Linux-x8664/bin输入完毕保存6.查看版本,测试是否安装成功:打开终端,输入cmake--version结果是:cmakeversion3.6.0(安装cmake成功!)要知道,在根目录下安装cmake,那么不同用户都可以共享使用这个cmake.

int main(int argc, char **argv)

{

char *p

int i

p= (char*) malloc(30) //加类型转换 (char*)

strcpy(p,"not 30 bytes")

printf("p=<%s>\n",p)

if(argc==2){

if(strcmp(argv[1],"-b") ==0) p[0]='a' //不要漏小括号,下标最大29,这里用0

else if(strcmp(argv[1],"-f")==0){

p[0]='b'

}

}

printf("%s\n",p) //这里输出

free(p) //释放

return 0

}

输入 程序名 -b, 输出:aot 30 bytes

输入 程序名 -f, 输出:bot 30 bytes


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/6179650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存