社区
Linux/Unix社区
帖子详情
问个gdb的问题
mingjava
2003-06-15 04:41:31
我的gdb为什么list出来的程序不是从开头开始的呢?
100行的程序好象从70多行开始显示的 .
...全文
37
4
打赏
收藏
问个gdb的问题
我的gdb为什么list出来的程序不是从开头开始的呢? 100行的程序好象从70多行开始显示的 .
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
netboys
2003-06-16
打赏
举报
回复
这是正常的,和断点没关系
你就用list 1来显示从头开始的部分
hohoo
2003-06-16
打赏
举报
回复
list应该在你的程序断点处前面几行。
mingjava
2003-06-15
打赏
举报
回复
我还没有调试呢 只是想看看程序而已。应该list是从第一行开始的阿 我只能在list后面加1 才从开始显示的
windchi
2003-06-15
打赏
举报
回复
为了显示你调试那一行的上下文关系, 我觉得是这样的。并且这样很好啊,可以看得更明白一些。
带图形界面形式的
gdb
在cygwin下使用
gdb
-20010428-3[1].tar.bz2 和
gdb
-20020411-1[1].tar.bz2 图形界面
GDB
使用指南 -SeaSon from HIT 1.安装:cygwin 下面安装就行了,注意我测试的
gdb
-20020411-1和
gdb
-20010428-3 都是 图形界面,而版本
gdb
-20041228-3 我发现是命令行的,所以推荐前两个版本,毕竟图形界 面方便很多,如果你热衷于新的版本,那看到这里你就可以停止了:)下面以 ns-allinone-2.27 为例说明 注:现在直接从网上安装的版本好像没有那么老的版本,我是从网上找到一个本地安装版本 “ Cygwin0528”(可以用 baidu 或者 google 搜一下),然后利用它安装
gdb
-20020411-1, 注意你只需要安装这一个就行了,其他的所有都选择为 keep(已经安装的)或者 skip(未 安装的),否则会出现
问题
的,一定要切记这点儿。 2.在代码里面添加调试信息:修改 Makefile(没有任何后缀的)将里面 CCOPT = #如果是ns-allinone-2.28,这里是 CCOPT = -O2 STATIC = LDFLAGS = $(STATIC) LDOUT = -o $(BLANK) 改变为: CCOPT = -g #如果是 ns-allinone-2.28,这里修改为 CCOPT = -O2 -g STATIC = LDFLAGS = $(STATIC) LDOUT = -o $(BLANK) 修改的东西是粉红色字体所示 3.然后重新编译 注意:以下步骤一个都不能少 Make clean Make depend Make 4.调试过程如下 进入工作目录:推荐 ns-2.27 操作:打开 xwindows 之后, a.输入 cd ns-allinone-2.27/ns-2.27(必须) b.输入
gdb
ns 进入
gdb
工作界面,如果不是图形界面的版本可能就直接在 xwindows进入
Gdb
调试过程,这样的话具体命令参见《NS 仿真软件》精华区,不要问我!!!!!!!!!! 如果按照我的要求安装的图形界面
gdb
,出现如下图形界面,如下所示: c.在左上角红色标记的地方输入你要调适的程序。如:mflood.cc 设置断点,注意只有最左边有“-”符号(如下图中 1 所示)的可以设置断点,将鼠标放 在行号上就会出现变成一个圆形的符号,单击即设了一个断点,原来的“-”地方变成了一 个红色的方框,如下图中标号 2 所示。 然后输入 Ctrl+N进入命令行窗口,如下图所示: 进入代码所在的目录 ns-2.27/mytcl 因为当前的工作目录在 ns-2.27,所以我直接输入 cd mytcl 就行了 输入命令 r mytcl.tcl 就进入调试,(调试不是在 console 窗口,而是在一下窗口)具 体调试根 vc差不多,呵呵,不用我罗嗦了,一些常用的如下图所示,其他的你看英文就知 道意思了。祝好运
基于百问网IMX6ULL使用
gdb
+vscode+qtcreator开
基于百问网IMX6ULL使用
gdb
+vscode+qtcreator开
GDB
调试 Linux C / C++
# 论 调试能力在开发程序中的重要性 调试是开发流程中一个非常重要的环境,每个程序员都应具备调试代码的能力,尤其对于从事 Linux C/C++ 开发的用户,必须具备熟练使用
GDB
调试器的能力。俗话说你有十分技能,那么其中包含了六分开发能力和四分调试能力。这套
GDB
入门视频教程能够做到深入浅出,让同学们能够快速学会使用
GDB
调试程序。#
GDB
简介 GNU symbolic debugger,简称
GDB
调试器,是 Linux 平台下最常用的一款程序调试器。
GDB
编译器通常以
gdb
命令的形式在终端(Shell)中使用,它有很多选项,这是我们要重点学习的。 发展至今,
GDB
调试器已经对 C、C++、Go、Objective-C、OpenCL、Ada 等多种编程语言提供了支持。实际场景中,
GDB
更常用来调试 C 和 C++ 程序,虽然 Linux 平台下有很多能编写 C、C++ 代码的集成开发工具(IDE),但它们调试代码的能力往往都源自
GDB
调试器。
gdb
plz:
GDB
的C ++ 11库前端
gdb
plz 用于GNU调试器的C ++ 11库前端。 (免责声明:该库甚至不在Alpha阶段) 特征 前向兼容(在某种意义上,较新的
GDB
版本不会破坏前端) 许可(MIT) 不允许运行歧义命令 依存关系 对于图书馆: Boost文件系统 增压系统 微小过程库 对于测试套件,您需要具备以上所有条件,另外: 抓住 快速检查 潜在
问题
问:
GDB
已获得GNU GPL许可,您的库已获得MIT许可。 那不是违反GPL许可吗? 答:。
GDB
没有链接,它作为一个单独的进程运行,符合此处提到的要求。
Linux下追踪函数调用,打印栈帧
事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况。也是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在
GDB
调试里可以追踪调用的栈帧,那也一定有方法实现。首先上网搜索了一下,并没有结果!还好代码量不是很多,只能用笨的方法,在每个调用Pop的地方,传参,把调用的文件,行号作为字符串传进去,在日志里打印!忙活完了,总感觉一定是有方法可以实现查看调用栈帧的,于是在QQ群里的问了下,果然有这方面经验的同学给出了答案! 主要是通过backtrace返回调用的栈帧,然后通过backtrace_symbols把地址转换为字符串。后,
Linux/Unix社区
23,127
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章