ubuntu 下gdb应用于软件包(以NGTCP2为例)

2 篇文章 0 订阅
0 篇文章 0 订阅
		在上一次的博客中讲述了使用gcc命令行编译的一些简单程序的gdb调试,
		但是在我们实际中更多的是一些软件工程,各种文件之间存在着相当大的依赖关系,
		仅仅使用gcc来编译肯定是会存在一些问题的。因此此次介绍的是基于Linux下软件工程的gdb调试,
		让你轻松搞定复杂的代码工程。

在Linux下的工程管理与Windows下的工程管理有很大的不同,Windows下的有着许多的开发工具帮助我们连接这些文件,而在ubuntu下则是使用makefile来实现代码工程的管理。因此要想允许软件工程的调试,就必须有针对的对makefile进行修改,使其能够满足允许调试的条件。
对于软件工程是有着一定的小技巧的,一般软件工程内会有configure文件,这是软件工程的重要核心,通过执行configure文件,加入允许调试的命令就可以达到在makefile中加入允许调制信息的目的。

接下来我以Google新开发的QUIC协议为例,来进行演示(可以在下面的网址下载)。
https://github.com/ngtcp2/ngtcp2/tree/draft-15

先打开到ngtcp2的目录下执行
$./configure -h
在打印出来的help中可以找到允许调试的选项如下图所示:
!(https://img-blog.csdnimg.cn/20190110204916974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTM1MzE3,size_16,color_FFFFFF,t_70)

[在倒数第三行可以看到允许调试输出的选项,因此执行以下的命令,来获取允许调试]
$./configure --enable-debug
执行就可以得到如下效果:!(https://img-blog.csdnimg.cn/20190110205342492.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTM1MzE3,size_16,color_FFFFFF,t_70)这样,就可以按照github上的安装命令行,来把ngtcp2装一遍,就可以得到允许调试的ngtcp2的软件工程包了。
(以下为测试client程序的例子,但是要保证server端也要跑起来,才能进行双方的正常通信);

$./server 127.0.0.1 4433 server.key server.crt
run 127.0.0.1 4433 -d /home/qyk/xxxx

第一行server 端是一个IP地址,端口号,私钥,证书
第二行client 端是一个IP地址,端口号,和一个文件路径K(意为把一个名为xxxx的文件读出来发到server端,xxxx一定要注意:程序必须要有权限去读它才行,否则会报错)

然后调试在examples文件夹下的demo测试程序,先把目录放到文件夹下;
$gdb
(https://img-blog.csdnimg.cn/20190110210651404.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTM1MzE3,size_16,color_FFFFFF,t_70)

之后就可以像上一篇博客介绍的一样进行单步跟踪和调试,此前给出的命令比较简单,一下是整理的一般用得到的gdb调试命令:

(gdb) break N 在当前的文件中某一行设定断点
(gdb) break main 在当前的文件中某个函数处(如main)设定断点

(gdb) delete 删除所有断点
(gdb) break N if **** 设置条件断点:
(gdb) continue 从断点处继续运行程序
(gdb) delete N 删除N号断点
(gdb) print var print显示变量值
(gdb) kill 终止一个正在调试的程序

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值