本篇文章给大家谈谈linux中怎么调试程序,以及linux调试在运行的程序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、linux 上怎么调试c++程序
当出现不正常运行的时候 可以在怀疑点加打印 然后运行看结果。
也可以使用gdb 来调试
在命令行输入gdb,然后进入了gdb的环境下
然后输入file main
这样我们就告诉gdb我们要调试main工程
输入l,就可以罗列出当前代码的信息
然后通过输入b main在main函数入口处加一个断点
输入r,我们开始运行代码,然后代码就停止到设置的断点处
可以输入n,进行单步的调试
那么输入c,程序继续执行,由于没有设置其他断点,这时候程序运行结束,并且输出一些信息。
2、linux里面如何单步调试!
一、GDB 概述
GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。
一般来说, GDB 主要帮忙你完成下面四个方面的功能:
1 、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2 、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3 、当程序被停住时,可以检查此时你的程序中所发生的事。
4 、动态的改变你程序的执行环境。
从上面看来, GDB 和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现 GDB 这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。
二、一个调试示例
源程序: tst.c
[cpp] view plain copy
#include stdio.h
int func(int n)
{
int sum=0,i;
for(i=0; in; i++)
{
sum+=i;
}
return sum;
}
int main()
{
int i;
long result = 0;
for(i=1; i=100; i++)
{
result += i;
}
printf("result[1-100] = %d /n", result );
printf("result[1-250] = %d /n", func(250) );
}
编译生成执行文件:( Linux 下)
hchen/test cc -g tst.c -o tst
启动Gdb:
以上是对于gdb的感性认识,接下来系统地认识一下 gdb 吧。
三、使用 GDB
1.基础
一般来说 GDB 主要调试的是 C/C++ 的程序。要调试 C/C++ 的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器( cc/gcc/g++ )的 -g 参数可以做到这一点。如:
cc -g hello.c -o hello
g++ -g hello.cpp -o hello
如果没有 -g ,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。当你用 -g 把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用 gdb 来调试他。
启动 gdb 后,就你被带入 gdb 的调试环境中,就可以使用 gdb 的命令开始调试程序了, gdb 的命令可以使用 help 命令来查看,
gdb 的命令很多, gdb 把之分成许多个种类。 help 命令只是例出 gdb 的命令种类,如果要看种类中的命令,可以使用 help class 命令,如: help breakpoints ,查看设置断点的所有命令。也可以直接 help command 来查看命令的帮助。如下图所示:
要退出 gdb 时,只用发 quit 或命令简称 q 就行了。
2 GDB 中运行 UNIX 的 shell 程序
在 gdb 环境中,你可以执行 UNIX 的 shell 的命令,使用 gdb 的 shell 命令来完成:
shell command string
调用 UNIX 的 shell 来执行 command string ,环境变量 SHELL 中定义的 UNIX 的 shell 将会被用来执行 command string ,如果 SHELL 没有定义,那就使用 UNIX 的标准 shell : /bin/sh 。(在 Windows 中使用 Command.com 或 cmd.exe )
还有一个 gdb 命令是 make :
make make-args
可以在 gdb 中执行 make 命令来重新 build 自己的程序。这个命令等价于 “ shell make make-args ”
3 在 GDB 中运行程序
在 gdb 中,运行程序使用 r 或是 run 命令。程序的运行,你有可能需要设置下面四方面的事。
1 、程序运行参数。
set args 可指定运行时参数。(如: set args 10 20 30 40 50 )
show args 命令可以查看设置好的运行参数。
2 、运行环境。
path dir 可设定程序的运行路径。
show paths 查看程序的运行路径。
set environment varname [=value] 设置环境变量。如: set env USER=hchen
show environment [varname] 查看环境变量。
3 、工作目录。
cd dir 相当于 shell 的 cd 命令。
pwd 显示当前的所在目录。
4 、程序的输入输出。
info terminal 显示你程序用到的终端的模式。
使用重定向控制程序输出。如: run outfile
tty 命令可以指写输入输出的终端设备。如: tty /dev/ttyb
3、linux应用怎么调试的
在 Linux 系统下面,不同的语言有不同的调试方法。如果是对用户自己编写的 C 语言源程序(*.c)进行调试,一般使用 gcc 编译器对 *.c 为后缀的源文件进行高级调试。例如:语法错误、数组越界错误、内存溢出错误等,但是这类错误,用户无法进行底层调试,只能够根据出错的原因,对源程序进行修改,然后再使用 gcc 编译器对源程序进行重新编译、运行;如果是对机器级的可执行代码进行底层调试,那还需要专门的对底层进行调试的工具软件才行。
关于linux中怎么调试程序和linux调试在运行的程序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。