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

在gcc里如何才能一步步运行程序

    来源: 互联网  发布时间:2015-10-23

    本文导语:  本人是新手,想问大虾在gcc里如何才能一步步运行程序 | http://www.chinalinuxpub.com/doc/pro/gdb.html 用 GDB 调试程序  原著:Rick McMullin 用 gdb 调试 GCC 程序     Linux 包含了一个叫 gdb 的 GNU...

本人是新手,想问大虾在gcc里如何才能一步步运行程序

|
http://www.chinalinuxpub.com/doc/pro/gdb.html

用 GDB 调试程序 

原著:Rick McMullin

用 gdb 调试 GCC 程序
    Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能: 
它使你能监视你程序中变量的值. 
它使你能设置断点以使程序在指定的代码行上停止执行. 
它使你能一行行的执行你的代码. 
 
    在命令行上键入 gdb 并按回车键就可以运行 gdb 了, 如果一切正常的话, 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.14 (i486-slakware-linux), Copyright 1995 Free Software Foundation, Inc.

(gdb)
    当你启动 gdb 后, 你能在命令行上指定很多的选项. 你也可以以下面的方式来运行 gdb : 
gdb 
    当你用这种方式运行 gdb , 你能直接指定想要调试的程序. 这将告诉gdb 装入名为 fname 的可执行文件. 你也可以用 gdb 去检查一个因程序异常终止而产生的 core 文件, 或者与一个正在运行的程序相连. 你可以参考 gdb 指南页或在命令行上键入 gdb -h 得到一个有关这些选项的说明的简单列表. 
  
为调试编译代码(Compiling Code for Debugging)
    为了使 gdb 正常工作, 你必须使你的程序在编译时包含调试信息. 调试信息包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号.  gdb 利用这些信息使源代码和机器码相关联. 
    在编译时用 -g 选项打开调试选项. 
  

gdb 基本命令
     gdb 支持很多的命令使你能实现不同的功能. 这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令, 表27.1列出了你在用 gdb 调试时会用到的一些命令. 想了解 gdb 的详细使用请参考 gdb 的指南页. 
  表 27.1. 基本 gdb 命令.   

命   令 描  述 
file 装入想要调试的可执行文件. 
kill 终止正在调试的程序. 
list 列出产生执行文件的源代码的一部分. 
next 执行一行源代码但不进入函数内部. 
step 执行一行源代码而且进入函数内部. 
run 执行当前被调试的程序 
quit 终止 gdb 
watch 使你能监视一个变量的值而不管它何时被改变. 
break 在代码里设置断点, 这将使程序执行到这里时被挂起. 
make 使你能不退出 gdb 就可以重新产生可执行文件. 
shell 使你能不离开 gdb 就执行 UNIX shell 命令.  

  
  
     gdb 支持很多与 UNIX shell 程序一样的命令编辑特征. 你能象在 bash 或 tcsh里那样按 Tab 键让 gdb 帮你补齐一个唯一的命令, 如果不唯一的话 gdb 会列出所有匹配的命令. 你也能用光标键上下翻动历史命令. 

gdb 应用举例
    本节用一个实例教你一步步的用 gdb 调试程序. 被调试的程序相当的简单, 但它展示了 gdb 的典型应用. 
  
    下面列出了将被调试的程序. 这个程序被称为 greeting , 它显示一个简单的问候, 再用反序将它列出. 
#include  



main ()

{

  char my_string[] = "hello there";



  my_print (my_string);

  my_print2 (my_string);

}



void my_print (char *string)

{

  printf ("The string is %sn", string);

}



void my_print2 (char *string)

{

  char *string2;

  int size, i;



  size = strlen (string);

  string2 = (char *) malloc (size + 1);

  for (i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 我在安装Red Hat Linux 时没有装到gcc,怎么才能在之后把gcc装上?
  • 请问gcc是不是要加什么参数才能编译C++程序的呢
  • redhat下用gcc编译出的exe文件怎么才能正常运行?
  • gcc如何才能生成一个几十k之内的hello world的程序(不依赖于任何so)?
  • 如何安装gcc,后运行make iis7站长之家
  • 高手,我装了Cygwin,有153M,不知道装全了没有,我在命令行敲入gcc,不行,那我该怎么办,才能利用它进行编程?
  • 我今天刚装了fedora core3,是带了图形界面的,我怎么才能进入命令行界面,我安装时是选了安装gcc的,但我不知道怎么
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • ubuntu下用gcc编译的程序要怎样运行,为何运行不了?
  • 关于gcc运行,请教
  • 为什么gcc编出来的程序要用“./”运行,而不能直接用名字运行?
  • Linux 下 gcc 运行程序时出错
  • gcc-2.95.3能不能在windows下编译安装运行?
  • 在redhat7.2中用gcc命令编译程序 却不能运行
  • 如何安装gcc,后运行make
  • 为什么我完全安装了Cygwin,但不能运行GCC?
  • 用gcc编译完成的程序为什么不能直接运行?
  • gcc编译好的程序怎么运行阿?
  • 为什么GCC编译过的C程序,为什么不能运行。
  • 为什么用gcc编译了文件之后运行不了啊?
  • 菜鸟提问:gcc编译后为什么不能运行?
  • 一个比较菜的问题,如何用GCC在XWindw下编译一般的程序并运行
  • gcc运行程序出现错误,求助。。。
  • 在unix中用gcc编译的.exe文件可以在windows下运行么?
  • 和位兄弟,你们装的linux都能运行gcc吗?
  • ubuntu gcc下运行结果不对
  • sco下用gcc编译hello.cpp出来的可执行文件居然有2800280字节,而且运行出错???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Solaris8,安装了iconv,gcc和gcclib,然后用gcc编译c程序出错。
  • GCC编译程序时,有自定义头文件,提示找不到该头文件,但他就在这个目录中,如何设置GCC参数?
  • 是否必须用同一版本GCC编译内核、应用程序、库甚至GCC自己?
  • 在linux编c程序,用gcc函数如何联接?
  • gcc程序怎么不能将输出重定向到文件或管道呀,你们有这个问题吗?
  • 请教 在linux下用gcc编译c程序的问题
  • gcc编译c程序时的问题!
  • 怎么用GCC编译网络程序?
  • root帐户使用GCC编译程序时,提示权限不够!!
  • 如何用gcc编译用了new[],delete[]语句的程序?
  • gcc编译CORBA程序如何关闭智能指针转换为普通指针的警告
  • 今天装了个linux9.0 问:怎样调出gcc来编译c++程序?(谢谢)
  • gcc与g++对于编译c++程序的区别
  • 请问如何用gcc,或者g++编译c/c++程序
  • 请问如何在linux下用gcc调试socket程序???
  • 有没有GCC程序与VS程序转换的工具
  • 请教大虾,我装了个linux,但是怎么不能编译c程序,不认识gcc!
  • 晕了,solaris系统下,使用gcc -g选项编译出的程序,怎么没有调试信息
  • putty下如何使用gcc编译c或c++程序的资料
  • 用gcc编译c程序能通过,为何没执行结果?
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 使用popen来执行gcc命令,如何根据读出来的gcc的输出来判断gcc是否编译成功?
  • 命令:mips_fp_le-gcc,mipsel-gcc 是什么意思?跟一般的gcc有什么区别?
  • 怎样升级我的GCC呀,我用的RH7.2,GCC 2.96 ,我从网上下载了一个gcc-3.2.3.tar.gz
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • gcc-ccore、avr-gcc及arm-gcc的区别
  • gcc在哪里?bash:gcc:command not found
  • 如何删掉GCC3.0(我需要GCC2.0-----)
  • Windows版GCC TDM-GCC
  • 急问:如何卸掉gcc 3.2庄gcc 2.96
  • 有人遇到过吗,在安装GCC时提示,"checking gcc ...no "


  • 站内导航:


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

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

    浙ICP备11055608号-3