Linux 下 C 语言编程 GDB 调试
2012-09-23 12:53
281 查看
视频:http://v.youku.com/v_show/id_XMTIyMDczNzY4.html
cmake and gdb
转载:http://blog.csdn.net/wfing/archive/2010/06/09/5659086.aspx
1. cmake支持gdb的实现,
首先在CMakeLists.txt下加入
SET(CMAKE_BUILD_TYPE "Debug")
在下面加入:
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
原因是CMake 中有一个变量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。
当这个变量值为 Debug 的时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile;
2. 在GDB中间加入程序启动参数
比如我们需要调试一个可执行文件./a.out help
这时
$gdb ./a.out
进入到gdb的命令行模式下,然后:
(gdb) set args help
就能加上可执行文件需要的参数,如果要看argc[1]到argc
的参数,只需要
(gdb) show args
3. gdb中查看字符串,地址的操作,数据类型
比始有一个int型的变量i,相要知道他的相关信息,可以
(gdb) print i
打印出变量i的当前值
(gdb)x &i
与上面的命令等价。
如果有x命令看时,需要看一片内存区域,(如果某个地方的值为0,用x时会自动截断了)
(gdb) x/16bx address
单字节16进制打印address地址处的长度为16的空间的内存,16表示空间长度,不是16进制,x表示16进制,b表示byte单字节
gdb看变量是哪个数据类型
(gdb) whatis i
即可知道i是什么类型的变量
gcc -g test.c -o test 产生test调试文件
gdb test/file test 启动调试程序
break main :在main函数设置断点
()内为简写
run(r)运行程序
next (n) 单步运行,不进入子函数
step(s)单步运行,进入子函数
continue(c) 继续运行
quit 退出gdb
list(l):查看程序
断点的设置:
1.break(b) 函数名 :在函数入口打断点
2.break 行号 把断点打在相应行
3.break 文件名:行号 多文件设置断点
4.break 行号 if条件
当条件为真时 在该行打断点b5
if i=20 当i为20在第5行打断点
5.delete break 参数 取消断点
6.info break查看所打断点
7.delete(d) 断点编号 删除对应编号的断点
8.print(p) 变量 查看变量值
9.finish 运行程序知道当前函数结束,跳出子函数
10.watch 变量名 监控变量的值
cmake and gdb
转载:http://blog.csdn.net/wfing/archive/2010/06/09/5659086.aspx
1. cmake支持gdb的实现,
首先在CMakeLists.txt下加入
SET(CMAKE_BUILD_TYPE "Debug")
在下面加入:
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
原因是CMake 中有一个变量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。
当这个变量值为 Debug 的时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile;
2. 在GDB中间加入程序启动参数
比如我们需要调试一个可执行文件./a.out help
这时
$gdb ./a.out
进入到gdb的命令行模式下,然后:
(gdb) set args help
就能加上可执行文件需要的参数,如果要看argc[1]到argc
的参数,只需要
(gdb) show args
3. gdb中查看字符串,地址的操作,数据类型
比始有一个int型的变量i,相要知道他的相关信息,可以
(gdb) print i
打印出变量i的当前值
(gdb)x &i
与上面的命令等价。
如果有x命令看时,需要看一片内存区域,(如果某个地方的值为0,用x时会自动截断了)
(gdb) x/16bx address
单字节16进制打印address地址处的长度为16的空间的内存,16表示空间长度,不是16进制,x表示16进制,b表示byte单字节
gdb看变量是哪个数据类型
(gdb) whatis i
即可知道i是什么类型的变量
gcc -g test.c -o test 产生test调试文件
gdb test/file test 启动调试程序
break main :在main函数设置断点
()内为简写
run(r)运行程序
next (n) 单步运行,不进入子函数
step(s)单步运行,进入子函数
continue(c) 继续运行
quit 退出gdb
list(l):查看程序
断点的设置:
1.break(b) 函数名 :在函数入口打断点
2.break 行号 把断点打在相应行
3.break 文件名:行号 多文件设置断点
4.break 行号 if条件
当条件为真时 在该行打断点b5
if i=20 当i为20在第5行打断点
5.delete break 参数 取消断点
6.info break查看所打断点
7.delete(d) 断点编号 删除对应编号的断点
8.print(p) 变量 查看变量值
9.finish 运行程序知道当前函数结束,跳出子函数
10.watch 变量名 监控变量的值
相关文章推荐
- Linux下C语言环境编程(gdb调试指针)
- gdb调试&C语言指针高级编程(5.7)
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
- Linux编程之gdb调试
- linux应用编程笔记(1)gdb调试方法及如何找出dbg.c程序中的错误
- C语言常用宏定义 __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
- Linux 操作系统 C 语言编程入门之编译调试说明及Makefile的编写
- Linux高级编程--04.GDB调试程序(入门概述)
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )(转自IT博客)
- linux编程之GDB调试
- linux编程之GDB调试
- linux下C语言编程1-gdb调试程序简介
- _FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
- Linux高级编程--04.GDB调试程序(设置断点)
- Linux编程-编译(gcc)与调试(gdb)
- Linux编程——gdb调试