当前位置:  技术问答>linux和unix

linux 下怎么调试程序?

    来源: 互联网  发布时间:2016-03-10

    本文导语:  谢谢  | 使用GDB:    本文描述GDB,GNU的原代码调试器。(这是4.12版1994年一月,GDB版本4。16) * 目录: * 摘要:                  GDB的摘要 * 实例:                        ...

谢谢 

|
使用GDB:
   本文描述GDB,GNU的原代码调试器。(这是4.12版1994年一月,GDB版本4。16)
* 目录:
* 摘要:
                 GDB的摘要
* 实例:                          一个使用实例
* 入门:                        进入和退出GDB
* 命令:                        GDB 的命令
* 运行:                        在GDB下运行程序
* 停止:                        暂停和继续执行
* 栈:                          检查堆栈
* 原文件:                      检查原文件
* 数据:                        检查数据
* 语言:                        用不同的语言来使用GDB
* 符号:                         检查符号表
* 更改:                         更改执行
* GDB的文件                     文件
* 对象                          指定调试对象
* 控制GDB                       控制
* 执行序列:                    执行一序列命令
* Emacs:                        使GDB和Emacs一起工作
* GDB的bug:
* 命令行编辑:                  行编辑
* 使用历史记录交互:
* 格式化文档:                  如何格式化和打印GDB文档

* 索引:

GDB简介:
**************

   调试器(比如象GDB)能让你观察另一个程序在执行时的内部活动,或程序出错时
发生了什么。
   GDB主要能为你做四件事(包括为了完成这些事而附加的功能),帮助你找出程序
中的错误。
   * 运行你的程序,设置所有的能影响程序运行的东西。

   * 保证你的程序在指定的条件下停止。

   * 当你程序停止时,让你检查发生了什么。

   * 改变你的程序。那样你可以试着修正某个bug引起的问题,然后继续查找另一
     个bug.

   你可以用GDB来调试C和C++写的程序。(参考 *C 和C++)


   调试Pascal程序时,有一些功能还不能使用。

  GDB还可以用来调试FORTRAN程序,尽管现在还不支持表达式的输入,输出变量,
或类FORTRAN的词法。
* GDB是"free software",大家都可以免费拷贝。也可以为GDB增加新的功能,不
过可要遵守GNU的许可协议幺。反正我认为GNU还是比较不错的:-)
就这句话:
   Fundamentally, the General Public License is a license which says
that you have these freedoms and that you cannot take these freedoms
away from anyone else.
GDB的作者:
   Richard Stallman是GDB的始作俑者,另外还有许多别的GNU的成员。许多人
为此作出了贡献。(都是老外不提也罢,但愿他们不要来找我麻烦:-))

这里是GDB的一个例子:
        原文中是使用一个叫m4的程序。但很遗憾我找不到这个程序的原代码,
所以没有办法来按照原文来说明。不过反正是个例子,我就拿一个操作系统的
进程调度原码来说明把,原代码我会附在后面。
        首先这个程序叫os.c是一个模拟进程调度的原程序(也许是个老古董了:-))。
先说明一下如何取得包括原代码符号的可执行代码。大家有心的话可以去看一下gcc的
man文件(在shell下打man gcc)。gcc -g  -o 
-g 的意思是生成带原代码调试符号的可执行文件。
-o 的意思是指定可执行文件名。
(gcc 的命令行参数有一大堆,有兴趣可以自己去看看。)
反正在linux下把os.c用以上方法编译连接以后就产生了可供gdb使用的可执行文件。
我用gcc -g os.c -o os,产生的可执行文档叫os.
然后打gdb os,就可进入gdb,屏幕提示:
     GDB is free software and you are welcome to distribute copies
      of it under certain conditions; type "show copying" to see
      the conditions.
     There is absolutely no warranty for GDB; type "show warranty"
      for details.

     GDB 4.16, Copyright 1995 Free Software Foundation, Inc...
 (gdb)
  (gdb)是提示符,在这提示符下可以输入命令,直到退出。(退出命令是q/Q)
为了尽量和原文档说明的命令相符,即使在本例子中没用的命令我也将演示。
首先我们可以设置gdb的屏幕大小。键入:
 (gdb)set width 70
就是把标准屏幕设为70列。
  然后让我们来设置断点。设置方法很简单:break或简单打b后面加行号或函数名
比如我们可以在main 函数上设断点:
 (gdb)break main
或(gdb)b main
 系统提示:Breakpoint 1 at 0x8049552: file os.c, line 455.
 然后我们可以运行这个程序,当程序运行到main函数时程序就会停止返回到gdb的
提示符下。运行的命令是run或r(gdb中有不少alias,可以看一下help,在gdb下打help)
run 后面可以跟参数,就是为程序指定命令行参数。
比如r abcd,则程序就会abcd以作为参数。(这里要说明的是可以用set args来指定参
数)。打入r或run后,程序就开始运行直到进入main的入口停止,显示:
Starting program: /os

|
学一下怎么用gdb,很方便

|
学习一下gdb,不错。

|
pintf & gdb

|
gdb很强大

熟悉下自己 debug吧

    
 
 

您可能感兴趣的文章:

  • 如何使用linux下gdb来调试python程序
  • linux 新手散分贴 我要在linux下调试多个.c和.h文件的程序 怎么调试?
  • linux下用gdb调试程序感觉非常不方便,不知道大家使用的什么工具进行调试的呀?
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • linux下调试的问题
  • 请问Linux下的C语言程序开发大家如何进行断点调试和单步调试?
  • 请教 Linux 中 eclipse + CDT 调试问题
  • linux下调试程序...
  • 关于linux下eclipse调试c++程序的问题
  • 到底怎么样调试linux内核啊?
  • linux下有没有类似于debugview的东东///或者linux下除了gdb,还有什么可以用于调试的软件吗?
  • 请问载linux下如何调试汇编程序,有没有像debug的程序。
  • linux下的调试工具
  • Linux程序调试工具 XBuildStudio
  • linux下如何单步或设置断点调试驱动或应用程序
  • LINUX下的程序调试问题
  • 调查一下:编写Linux内核模块 驱动程序各位高手所用的编辑环境和调试工具
  • linux 下用gdb调试器出现问题
  • 在Linux下用哪种调试工具比较好!(有加分!!!)
  • 请问linux中如何跟踪调试USB无线网卡驱动
  • 求一linux下图形调试工具
  • linux下通过crond实现自动执行程序
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • linux上的程序怎样远程启动另一个linux系统上的某个程序
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • Linux程序员在公司里做什么程序?(Linux程序员请进)
  • 我的linux程序 如何 在pc机器上运行。现在我用arm-linux-g++ 编译后的程序在我的嵌入设备上运行。
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    linux和unix iis7站长之家