linuxgdb命令n linux命令vgs

gdb中的箭头指向的含义

gdb是Linux下非常实用的程序调试插件,因为Linux默认在gcc生成a.out时生成的是Release版本,在ELF段中不存在Debug相关段,需要在编译时在命令最后加上-g 标识,标识生成Debug版本,也因为Debug是在ELF段中插入Debug段落,所以我们可以确定Debug版本是在编译阶段就将相关调试插件放入程序中,而不是在链接的时候放入的。

站在用户的角度思考问题,与客户深入沟通,找到安国网站设计与安国网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖安国地区。

GDB的相关命令

GDB使用的指令分为以下几个部分,在此一一罗列出:

断点管理命令

l 显示源代码(默认显示main函数所在的文件的源代码)

list filename:num 显示指定文件指定行附近的源代码

b linenum 给指定行添加断点

b funactionname 给指定函数添加断点

b filename:linenum 给指定文件指定行添加断点

b linenum if 条件 添加一个条件断点(if i == 5)在多次循环中使用更加精确和普遍

info b 显示当前所有断点信息

d bpnum 删除断点

disable bpnum 将断点设置为无效

enable bpnum 将断点设置为有效

执行过程控制

r 启动调试

n 执行下一步

s 进入函数执行 类比Visual Studio中的逐语句运行

finish 退出当前函数执行的过程(无论是否真正执行完函数内容)

c 继续运行 运行到下一个断点,中间过程不在停止,如果再没有断点则会运行到程序结束

q 退出调试

p valname 查看变量的值

p valname 查看变量的地址

p *ptr 查看指针指向的地址存储的值(相当于解引用一次,获取指针所指的值)

//

int arr[10] = {0};

int *parr = arr

//

p arr 显示数据所有的元素,arr是数组首地址,输出数组所有元素数据

p ptrr 这是一个指针变量,会输出数组首元素的地址

p *parr@num 这里的num是元素个数,通过指向数组的指针显示数组所有元素

struct_val 显示结构体变量中所有的成员值

p struct_val.group 显示结构体变量中某个成员值

p ptr_struct-a 通过指针显示结构体变量某个成员的值

p funactionname(a,b) 将函数测试运行(适合于测试函数崩溃的原因是否由传入参数造成)

bt 显示函数调用栈 函数调用流程

之后会写一篇博文来实战gdb调试。

gdb命令

linux

为什么这款显卡吧这么受欢迎?性价比高,性能稳定!

精选推荐

广告

gdb调试详解

1.2W阅读·0评论·21点赞

2019年5月4日

Linux下gdb调试-函数调试操作说明

446阅读·0评论·0点赞

2022年10月18日

gdb参数详解(整理过)

2.2W阅读·5评论·1点赞

2007年9月27日

GDB常用命令大全 GDB 命令详细解释

308阅读·0评论·0点赞

2020年6月4日

GDB入门教程之如何使用GDB启动调试

1483阅读·0评论·0点赞

2019年9月26日

GDB调试命令详解

1701阅读·0评论·0点赞

2022年2月18日

全新方舟生存进化!真实制作!快来试试你的方舟怎么下

精选推荐

广告

【Linux】Linux调试器--gdb详解

1833阅读·7评论·11点赞

2021年11月16日

linux下gdb调试方法与技巧整理

875阅读·0评论·3点赞

2020年10月6日

Linux之gdb调试详解

1121阅读·3评论·4点赞

2021年12月10日

GDB调试详解

264阅读·0评论·0点赞

2019年12月23日

gdb调试

101阅读·0评论·0点赞

2022年4月18日

GDB调试

117阅读·1评论·0点赞

2020年10月30日

gdb调试工具

47阅读·0评论·0点赞

2021年9月16日

gdb调试常用命令,attach,br,n,bt

2.3W阅读·1评论·3点赞

2018年9月13日

gdb调试(四)函数调用栈—stack

191阅读·0评论·0点赞

2011年10月26日

GDB 基本知识

4731阅读·0评论·0点赞

2013年2月1日

gdb积累学习

3614阅读·0评论·1点赞

2013年11月1日

gdb 问题

1194阅读·1评论·0点赞

2020年10月23日

去首页

看看更多热门内容

linux入门基础(四)Gdb调试程序

Gdb调试

注意:在Gcc编译选项中一定要加入

–g

退出GDB:quit

Ctrl+d

调试过程:

1.

查看文件

命令:

(gdb)

l

命令:(gdb)

b

行号

注:到第17行停止,并没有执行17行

3.

查看断点情况

info

b

4.

运行代码

r

命令:

(gdb)

r

(也可以指定行开始运行,在r后面加上行号)

5.

查看变量值

p

命令:(gdb)

p

变量名

6.

设置监视点:

watch

z

(变量名)

也可以是复杂的表达式

7.

单步运行

命令:(gdb)

n

(逐过程)

8.逐步,会进入函数

命令:(gdb)

s

9.条件断点

将正常断点转变为条件断点:condition

如:condition

1

i

==

10

只有当满足条件i

==

1时,才会在断点1处暂停

10.

恢复程序运行

c

命令:

(gdb)

c

(程序就会运行,如果没有断点,就运行剩下部分,如果有断点,就会运行到下一个断点)

11.

去除断点

clear

line_number

clear

filename:line_number

12.

help

12.1

help找出类别

12.2help从列表中

Linux 里面的gdb到底是个什么东西?

分类: 电脑/网络 操作系统/系统故障

问题描述:

第一次在Linux上工作,要用到一个什么gdb的东东。gdb到底是什么呢,各位老大?

解析:

Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:

它使你能监视你程序中变量的值.

它使你能设置断点以使程序在指定的代码行上停止执行.

它使你能一行行的执行你的代码.

在命令行上键入 gdb 并按回车键就可以运行 gdb 了, 如果一切正常的话, gdb 将被启动并且你将在屏幕上看到类似的内容:

GDB is free sofare and you are wele 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 Sofare Foundation, Inc.

(gdb)

当你启动 gdb 后, 你能在命令行上指定很多的选项. 你也可以以下面的方式来运行 gdb :

gdb fname

当你用这种方式运行 gdb , 你能直接指定想要调试的程序. 这将告诉gdb 装入名为 fname 的可执行文件. 你也可以用 gdb 去检查一个因程序异常终止而产生的 core 文件, 或者与一个正在运行的程序相连. 你可以参考 gdb 指南页或在命令行上键入 gdb -h 得到一个有关这些选项的说明的简单列表.

[Linux]gdb查看内存区命令

GNU调试器(GNU Debugger, GDB)是一个开源的源代码级的调试工具,其性能优良、功能齐全、易于使用,在嵌入式系统开发过程中扮演着越来越重要的角色。接下来是我为大家收集的[Linux]gdb查看内存区命令,希望能帮到大家。

[Linux]gdb查看内存区命令

用gdb查看内存

格式: x /nfu

说明

x 是 examine 的缩写

n表示要显示的内存单元的个数

f表示显示方式, 可取如下值

x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十进制格式显示无符号整型。

o 按八进制格式显示变量。

t 按二进制格式显示变量。

a 按十六进制格式显示变量。

i 指令地址格式

c 按字符格式显示变量。

f 按浮点数格式显示变量。

u表示一个地址单元的长度

b表示单字节,

h表示双字节,

w表示四字节,

g表示八字节

Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),

t(binary), f(float), a(address), i(instruction), c(char) and s(string).

Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes)

举例

x/3uh buf

表示从内存地址buf读取内容,

h表示以双字节为一个单位,

3表示三个单位,

u表示按十六进制显示

例子:

n是个局部变量

Breakpoint 1, main (argc=1, argv=0xbffff3a4) at calc.c:7

7 int n = atoi(argv[1]);

(gdb) print n

$1 = (int *) 0xbffff2ec

(gdb) x 0xbffff2ec

0xbffff2ec: 0x00282ff4

(gdb) print * (int *) 0xbffff2ec

$2 = 2633716

(gdb) x /4xw 0xbffff2ec

0xbffff2ec: 0x00282ff4 0x080484e0 0x00000000 0xbffff378

(gdb) x /4dw 0xbffff2ec

0xbffff2ec: 2633716 134513888 0 -1073745032

(gdb)

看了“[Linux]gdb查看内存区命令”还想看:

1. Linux使用dmidecode命令查看内存型号

2. Linux下查看CPU型号,内存大小,硬盘空间命令

3. 如何在Linux命令行中查看目录的大小

4. LINUX 查看硬件配置命令的教程


本文名称:linuxgdb命令n linux命令vgs
文章分享:http://csdahua.cn/article/ddesise.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流