GNU gdb Red Hat Linux (5.5)
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or 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.
This GDB was configured as “i386-redhat-linux”…const: not in executable format.
解决办法:
1.查看Makefile文件,CFLAGS选项是否加-g # CFLAGS= -g -O2
2.file/tyoe命令查看执行文件类型
[root@lt-liyuncheng 2]# file const
const: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked
(uses shared libs), for GNU/Linux 2.6.9, not stripped #保证是可执行文件
[root@lt-liyuncheng 2]# type ./const
./const is ./const #保证执行文件路径正常
3.如果程序正在处于执行状态,那么调试的时候使用下面的命令:
$ps -ef|grep const
$gdb const PID
1.core文件
当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映象。使用
gdb调试
core文件,可以帮助我们快速定位程序出现段错误的位置。当然,可
执行程序
编译时应加上-g编译选项,生成调试信息。
当程序访问的内存超出了系统给定的内存空间,就会产生Segmentation fault (core dumped),因此,段错误产生的情况主要有:
(1)访问不存在的内存地址;
(2)访问系统保护的内存地址;
(3)数组访问越界等。
core dumped又叫核心转储, 当程序运行过程
(1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
(2)可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
(3)当程序被停住时,可以检查此时你的程序中所发生的事。
(4)动态的改变你程序的执行环境。
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。
2、调试C/C++程序
直接上代码了
#include<iostrea
刚开始学习Qt,在调试程序时
提示
not in
executable
format
:file
format
not recognized
在查找资料后发现是因为编译器(Compiler)使用了32 位版本的 MSVC,调试器(Debugger)却使用了64 位的 MinGW 的 GDB,从而 GDB 不能调试 32 位程序而报错。
解决办法:
在 Qt 的 工具 - 选项 - 构建和运行 - Debuggers 选择 CDB(Debugging Tools for Windows),
不能自动检测到则手动添
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:
它使你能监视你程序中变量的值.
它使你能设置断点以使程序在指定的代码行上停止执行.
使你能一行行的执行你的代码.
GDB是GNU调试器(GNU Debugger)的缩写,是一款功能强大的调试器,可以用于调试C、C++、汇编等程序。使用GDB可以帮助我们找出程序中的错误、调试崩溃问题、查看变量的值等。
下面是一个简单的使用
GDB调试
程序的步骤:
1.编译程序时加上-g选项,以便在程序中嵌入调试信息。比如:
gcc -g -o program program.c
2.启动GDB,让其
加载
要调试的程序。比如:
gdb program
3.在GDB中设置断点,以便在程序执行到该处时停下来。比如:
break line_number
其中,line_number是要设置断点的行号。
4.运行程序。比如:
5.程序执行到断点处时,GDB会自动停下来。此时可以使用GDB提供的一系列命令来查看程序状态、修改变量的值等。比如:
- `list`:显示当前行的代码及其周围的代码;
- `print variable`:输出变量的值;
- `step`:单步
执行程序
,进入函数内部;
- `next`:单步
执行程序
,不进入函数内部;
- `finish`:执行到当前函数结束;
- `continue`:从当前位置继续
执行程序
;
- `backtrace`:显示函数调用栈。
6.当程序执行到最后时,或者不需要继续调试时,可以使用以下命令退出GDB:
总之,GDB是一款非常强大的调试器,只有熟练掌握其使用方法,才能更有效地进行程序调试。