gdb的基本使用方法(-40).ppt_第1页
gdb的基本使用方法(-40).ppt_第2页
gdb的基本使用方法(-40).ppt_第3页
gdb的基本使用方法(-40).ppt_第4页
gdb的基本使用方法(-40).ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UNIX的编译工具 C编译系统框图 C源程序 头文件 编译程序预处理 编译程序 优化程序 汇编程序 链接程序 可执行文件 a out gcc gcc GNUC编译器 是一个在UNIX或linux系统上运行的 功能确定的编译器 主要用于对C C ObjectC语言的编译 键入 gcc v可以显示目前使用的gcc的版本 gcc gcc gcc文件的位置1 usr lib gcc lib target version 及其子目录大部分编译器都被放在这里 还有一些做编译工作的可执行程序 以及存放本版本的程序库和头文件 2 usr bin gcc存放编译器的驱动程序 3 usr target bin lib include 属于非本地目标对象的程序库和工具存放的位置 4 lib 或 usr lib本地系统的程序库目录 gcc gcc的调用格式 gcc options filenames 其中 filenames是所要编译的程序源文件 当调用gcc时 gcc会完成预处理 编译 汇编和链接 前三步分别生成目标文件 链接时 把生成的目标文件链接成可执行文件 gcc gcc支持不同的源程序文件进行不同处理 gcc gcc主要参数选项 xlanguage指定使用的语言 c c 或汇编 c只对文件进行编译和汇编 但不链接 S只对文件进行编译 但不汇编和链接 E 或 P 只对文件进行预处理 但不编译 汇编和链接 ofile1file2将文件file2编译成可执行文件file1 ldirectory用于指定所使用的库文件 Idirectory为include文件的搜索指定路径 w禁止警告信息 Wall显示附加的警告信息 gcc g显示排错信息用于gdb调试 static创建静态程序库 有利于程序的调试 O优化编译代码 MM输出一个make兼容的相关列表 v输出gcc在编译过程中执行的每一个命令注 更详细的选项可以提供执行mangcc或infogcc获得帮助 gcc 需要注意 有些选项是多个字母 因此多个单字母选项不能组合使用 否则会产生歧义 例如 gcc p gfile c gcc pgfile c第一条gcc编译时为prof命令建立信息文件并把调试信息加入到可执行的文件中 第二条gcc为gprof命令建立信息文件 gcc 当不用任何选项编译一个程序时 gcc将会生成一个名为a out的可执行文件 可以使用 o编译选项为产生的可执行文件指定一个文件名代替a out 注意 当使用 o选项时 o后面必须跟上一个文件名 例如 文件examplehello c gcc gcc 多个程序的编译 多个程序的编译 多个程序的编译 使用调试选项 gcc支持几种调试选项 其中最常用的是 g和 pg g告诉gcc产生被GNU调试程序gdb使用的信息以便程序调试 如果使用 g和 O联用 可以在与最终的程序尽可能相近的情况下调试代码 同时使用这两个选项时必须清楚所写的某些源代码已经在优化时被gcc做了改动 ggdb选项可以使代码包含gdb传有特性的调试信息以方便gdb的调试工作 但任何一个调试选项都会使产生的可执行二进制文件的大小急剧增加 从而增加程序的执行开销 UNIX程序的调试工具 UNIX环境下的程序调试工具 主流的调试工具gdb 可以在程序执行过程中进行调试 sdbdbxadb程序的调试十分关键动态调试 灵活性 程序调试的主要内容 1 程序执行流程的控制断点的设置指令的单步执行指令的多步执行变量的检查定义的变量存储区域寄存器 程序调试的主要内容 2 函数调用堆栈的显示用于显示函数之间的调用关系汇编语言级的调试将高级语言实现拓展源程序的显示 使用gdb调试程序 GDB的全称是GNUDebuger 是linux底下的一种免费的debug程式 GDB可以让你调试一个程序 包括让程序在你希望的地方停下 此时你可以查看变量 寄存器 内存及堆栈 更进一步你可以修改变量及内存值 要使用gdb 首先 在你compile程式的時候 要加上 g的选项 可以用 g g2 g3 g后面的数字越大 可以debug的级别越高 最高级别就是 g3 gdb的基本使用方法 启动gdb并获得版本和相关信息 gdb gdb的基本使用方法 如果指定想要调试的文件名 输入 gdbfilenamegdb将装入名为filename的可执行文件 gdb的基本使用方法 我們来学习gdb 用你喜爱的editor编辑一个叫做debugit c的文件 內容如下 统计键盘输入的一行字符串中的单词个数 include include includeintwordnum char s gdb的基本使用方法 main charstr 80 intnum printf Pleaseinputastringtocountwords n gets str num wordnum str printf Thenumberofwordsis d n num gdb的基本使用方法 intwordnum char s intj 0 intwordend 0 for s 0 s if s wordend 0 elseif wordend wordend 1 j printf Thestringis s n s returnj gdb的基本使用方法 gdb的基本使用方法 经gcc编译 链接后可以执行 结果是 gdb的基本使用方法 从上面信息中可以看出 程序在输出用户提供的字符串是有问题 输出了空串 下面进行调试 gdb的基本使用方法 gdb的基本使用方法 gdb的基本使用方法 gdb的基本使用方法 gdb的基本使用方法 gdb的基本使用方法 gdb的基本使用方法 由此可以得知 当函数循环运行结束时 s指针将指向字符串结尾 因此在32行输出字符串时将得到空串 修改的办法是在函数内不改变参数s的值 使用另外一个字符串指针索引字符串中的字符 修改程序 并重新编译和链接 运行程序 来验证所进行的修改是否有效 gdb的基本使用方法 子函数的程序修改为 intwordnum char s intj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论