当前位置: 首页 > news >正文

网站制作乌鲁木齐如何在手机上开自己的网站

网站制作乌鲁木齐,如何在手机上开自己的网站,国外购物网站平台有哪些,北京团购网站建设文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须…

文章目录

  • 3. Linux调试器-gdb使用
    • 3.1 背景
    • 3.2 下载安装
    • 3.3 使用gdb查询
    • 3.4 开始使用


3. Linux调试器-gdb使用

3.1 背景

程序的发布方式有两种,debug模式和release模式

Linux gcc/g++出来的二进制程序,默认是release模式

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项


3.2 下载安装

debug模式的代码可以被调试,release模式的代码不可以被调试。

为什么一个可以被调试一个不可以被调试呢?

debug模式的代码形成可执行程序的时候会有调试信息,而release模式的代码没有。

我们可以先进入root账户安装一下gdb

sudo apt update            # 更新软件源
sudo apt install gdb      # 安装gdb

然后验证

# 检查gdb版本
gdb --version

3.3 使用gdb查询

对于一个文件我们不知道是debug还是release,就可以使用gdb来查询

我们先写一个Makefile

mycode:mycode.cgcc -o $@ $^
.PHONY:clean
clean:rm -f mycode

然后写一个mycode.c的文件,里面写一个hello linux

然后编译,使用gdb

eeba3f8195ebf7ba6bd1491b14563cff

(No debugging symbols found in mycode)意味着不是debug版本的。

退出gdb的话输入一个q,回车就行了。

还有个命令readelf -S mycode,可以读取

文件的二进制构成,可以看到里面没有debug

92a256dfe1ebda605a4281a80aa9f655

说明gcc编译默认是release编译的。

如果我们想要debug编译可以改一下代码:

67074cdc023ca749e2c68386258f9a32

这里的-g是使用debug,前面的mycode-debug是改个名字便于区分。

然后我们make一下,

2a5aa622ffeb68e7dd4a4dca9b0f76dd

出现了这个信息。


3.4 开始使用

  • gdb binFile 退出: ctrl + d 或 quit 调试命令:

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。

  • list/l 函数名:列出某个函数的源代码。

  • r或run:运行程序。

  • n 或 next:单条执行。

  • s或step:进入函数调用

  • break(b) 行号:在某一行设置断点

  • break 函数名:在某个函数开头设置断点

  • info break :查看断点信息。

  • finish:执行到当前函数返回,然后挺下来等待命令

  • print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数

  • p 变量:打印变量值。

  • set var:修改变量的值

  • continue(或c):从当前位置开始连续而非单步执行程序

  • run(或r):从开始连续而非单步执行程序

  • delete breakpoints:删除所有断点

  • delete breakpoints n:删除序号为n的断点

  • disable breakpoints:禁用断点

  • enable breakpoints:启用断点

  • info(或i) breakpoints:参看当前设置了哪些断点

  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值

  • undisplay:取消对先前设置的那些变量的跟踪

  • until X行号:跳至X行

  • breaktrace(或bt):查看各级函数调用及参数info(i) locals:查看当前栈帧局部变量的值

  • quit:退出gdb

mycode.c

#include <stdio.h>int addToTop(int top)
{int res=0;int i=1;for(;i<=top;i++){res+=i;}return res;
}int main(){printf("debug begin\n");int top=100;int sum=addToTop(top);printf("sum:%d\n",sum);printf("debug end\n");return 0;
}   

执行编译生成的mycode-debug文件:

76d205c3f6d08ddee19c7361203e097e

输入命令进入交互模式

a6dd300f0112d47f79edd5616a902092

要调试首先要看到代码,我们可以输入list或者l

3f07e3def4d036f11326f6d9fdf890a4

不过这边只输出了10行,我们也可以使用list n来显示一下:

74b123ad7415bba215a24e38c9ccb5b7

也可以输完l 0后回车,一次出现10行。

fbdbadbdbf2826a0bf4a5fa2daad8e8d

直接输入r,因为没有断点就直接运行了。

c94e575e51e997a52d04895b95778982

我们一般可以打断点:

b 行号

fd442eca9b73d11af87e376dfb1bac36

这边打完断点怎么查呢?

可以使用info b来查询。

6952f4642f1716936c575a32ba79166a

怎么删除断点呢?

断点的删除可以使用:b 行号来删除,要注意这里的行号是Num这里的断点的行号。

这里的Enb的值有yny就是启用断点,n就是禁用断点。

4f4fdfa0beb7dfb99f001846fddfd989

如果我们想要看里面的i,就可以使用p i;如果我们想要看里面的i的地址,就可以使用p &i

每次都这么输入比较麻烦,我们就可以使用display

display 变量名:跟踪查看一个变量,每次停下来都显示它的值。

如果我们想让自己从一个断点到另一个断点,就可以直接使用continue(或c)。

也可以禁用断点而不是删除断点:disable breakpoints

http://www.shuangfujiaoyu.com/news/59181.html

相关文章:

  • 深圳网站设计制作元免费发链接的网站
  • 深圳有几个区哪个区最繁华无线网络优化是做什么的
  • 哪种类型的网站比较难做自助发外链网站
  • 网站tag聚合怎么做2023全民核酸又开始了
  • 蚂蚁中国网站建设品牌推广方案包括哪些
  • 共享的网站备案做百度推广销售怎么样
  • 知名的网站制作seo怎么做教程
  • 移动免费网站建设清理大师
  • 上海网站公司制作网站需要什么
  • 网络规划设计师教程最新版江苏泰州seo网络优化推广
  • wordpress文章目录页面关键词优化排名要多少钱
  • 诸城网站制作百度怎么搜索图片
  • 公司网站一般是怎么做网站制作步骤流程图
  • 网页模板网站cmsseo白帽优化
  • ftp网站模板360渠道推广系统
  • 网站开发有哪几个阶段网站大全
  • 郑州做网站建设公司neotv
  • wordpress如何跳转页面代码seo还有前景吗
  • 网站开发 报价单 表格宁波网站推广联系方式
  • 如何连接wordpress武汉seo主管
  • 任何查询网站有没有做404网站推广是干嘛的
  • 什么网站可以做邮件列表百度口碑官网
  • 住建厅特种作业证查询seo研究中心倒闭
  • 抖音代运营法律案件长沙网站优化对策
  • 毕设网站开发什么题目好如何做网站的教程
  • 搜索引擎推广价格seo的理解
  • 广州市建设工程安监站网站网购网站十大排名
  • 千库网ppt模板素材免费网站优化seo是什么意思
  • php动态网站开发案例教程电子版短视频seo厂家
  • 网站建设质量保证金企业如何进行网络推广