随笔 - 150, 文章 - 0, 评论 - 11, 阅读 - 18万
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  C/C++

摘要:浮点型的原理介绍及在内存中的存储形式 C语言提供了浮点数据类型,单精度浮点数float和双精度浮点数double。浮点数属于不精确的数据类型,本文将通过float类型的原理和在内存中的存储形式来介绍浮点型不精确的原因。以float类型为例,来展示C语言中浮点型的神秘之处。 float类型介绍 flo 阅读全文

posted @ 2020-11-27 11:13 面具下的戏命师 阅读(2696) 评论(0) 推荐(0) 编辑

摘要:GDB编辑、搜索源码以及在线帮助 本节主要讲解的是在 GDB 内对源文件中的代码进行修改和查找,分别对应 GDB 中的 edit 命令和 search 命令,下面是对这两个命令的详细介绍。 GDB edit命令:编辑文件 在 GDB 中编辑源文件中使用 edit 命令,该命令的语法格式如下: (gd 阅读全文

posted @ 2020-10-26 13:32 面具下的戏命师 阅读(614) 评论(0) 推荐(0) 编辑

摘要:GDB查看栈信息 当程序因某种异常停止运行时,我们要做的就是找到程序停止的具体位置,分析导致程序停止的原因。对于 C、C++ 程序而言,异常往往出现在某个函数体内,例如 main() 主函数、调用的系统库函数或者自定义的函数等。要知道,程序中每个被调用的函数在执行时,都会生成一些必要的信息,包括: 阅读全文

posted @ 2020-10-26 13:19 面具下的戏命师 阅读(861) 评论(0) 推荐(0) 编辑

摘要:GDB信号处理 C、C++ 程序中,信号常常作为进程间通信的一种重要手段。举个例子: #include <stdio.h> #include <unistd.h> #include <signal.h> void display(){ printf("http://c.biancheng.net/g 阅读全文

posted @ 2020-10-26 11:41 面具下的戏命师 阅读(775) 评论(0) 推荐(0) 编辑

摘要:GDB反向调试 GDB 调试器对代码进行单步调试和断点调试。这 2 种调试方法有一个共同的特点,即调试过程中代码一直都是“正向”执行的(从第一行代码执行到最后一行代码)。这就产生一个问题,如果调试过程中不小心多执行了一次 next、step 或者 continue 命令,又或者想再次查看刚刚程序执行 阅读全文

posted @ 2020-10-26 11:36 面具下的戏命师 阅读(616) 评论(0) 推荐(0) 编辑

摘要:GDB调试多进程程序 GDB调试器不只可以调试多线程程序,还可以调试多进程程序。对于 C 和 C++ 程序而言,多进程的实现往往借助的是<unistd.h>头文件中的 fork() 函数或者 vfork() 函数。举个例子: #include <stdio.h> #include <unistd.h 阅读全文

posted @ 2020-10-26 11:27 面具下的戏命师 阅读(2383) 评论(0) 推荐(0) 编辑

摘要:GDB后台调试命令 前面章节中,我们已经接触了很多调试命令,如 run(r)、continue(c)、next(n)等,借助它们即可操控 GDB 调试目标程序。有些读者可能已经注意到,这些调试命令在执行过程中,是无法使用其它 GDB 调试命令的,换句话说,只有当一个调试命令执行结束后,(gdb) 命 阅读全文

posted @ 2020-10-26 11:04 面具下的戏命师 阅读(947) 评论(0) 推荐(0) 编辑

摘要:GDB non-stop模式 对于调试多线程程序,GDB 默认采用的是 all-stop 模式,即只要有一个线程暂停执行,所有线程都随即暂停。这种调试模式可以适用于大部分场景的需要,借助适当数量的断点,我们可以清楚地监控到各个线程的具体执行过程。 但在某些场景中,我们可能需要调试个别的线程,并且不想 阅读全文

posted @ 2020-10-26 10:53 面具下的戏命师 阅读(910) 评论(0) 推荐(0) 编辑

摘要:GDB调试多线程程序 GDB 调试器不仅仅支持调试单线程程序,还支持调试多线程程序。本质上讲,使用 GDB 调试多线程程序的过程和调试单线程程序类似,不同之处在于,调试多线程程序需要监控多个线程的执行过程,进而找到导致程序出现问题的异常或 Bug,而调试单线程程序只需要监控 1 个线程。 表 1 罗 阅读全文

posted @ 2020-10-23 14:58 面具下的戏命师 阅读(1932) 评论(0) 推荐(0) 编辑

摘要:GDB禁用删除断点 GDB 调试器支持 3 种断点,分别为普通断点(用 break 命令创建)、观察断点(用 watch 命令建立)以及捕捉断点(用 catch 命令建立)。并且如果需要的话,我们可以在被调试程序中打多个断点,甚至于 GDB 允许在同一位置打多个断点。如果之前建立的断点不再需要或者暂 阅读全文

posted @ 2020-10-20 20:45 面具下的戏命师 阅读(1303) 评论(0) 推荐(0) 编辑

摘要:GDB查看变量值 print和display GDB 调试程序,最常用的方法是:单步调试或者断点调试程序,期间通过查看某个变量或者表达式的值,判断当前程序的执行过程是否正确,不断缩小异常或 Bug 位于代码中的范围,最终找到并修复。对于在调试期间查看某个变量或表达式的值,GDB 调试器提供有 2 种 阅读全文

posted @ 2020-10-19 19:29 面具下的戏命师 阅读(6244) 评论(0) 推荐(1) 编辑

摘要:GDB断点调试详解 通过在程序的适当位置打断点,观察程序执行至该位置时某些变量(或表达式)的值,进而不断缩小导致程序出现异常或 Bug 的语句的搜索范围,并最终找到,整个过程就称为断点调试。 整个断点调试的过程,除了要借助 break、watch 或者 catch 命令以外,还要借助其它一些命令,例 阅读全文

posted @ 2020-10-19 11:23 面具下的戏命师 阅读(3445) 评论(0) 推荐(0) 编辑

摘要:GDB单步调试程序 单步调试,就是通过一行一行的执行程序,观察整个程序的执行流程,进而尝试发现一些存在的异常或者 Bug。借助 next 命令可以控制 GDB 单步执行程序。GDB 调试器共提供了 3 种可实现单步调试程序的方法,即使用 next、step 和 until 命令。这 3 个命令都可以 阅读全文

posted @ 2020-10-18 21:30 面具下的戏命师 阅读(1734) 评论(0) 推荐(0) 编辑

摘要:GDB条件断点 在通过GDB调试程序时,可以通过 break 创建普通断点。但是普通断点的建立,可以使用如下格式的 break 命令: (gdb) break ... if cond ... 参数用于指定生成断点的具体位置;cond 参数用于代指某个表达式。通过此方式建立的普通断点,只有当表达式 c 阅读全文

posted @ 2020-10-18 15:10 面具下的戏命师 阅读(2407) 评论(0) 推荐(0) 编辑

摘要:GDB观察和捕捉断点 GDB 调试器支持在程序中打 3 种断点,分别为普通断点、观察断点和捕捉断点。其中 break 命令打的就是普通断点,而 watch 命令打的为观察断点。catch 命令建立捕捉断点。 观察断点 GDB 调试程序的过程中,借助观察断点可以监控程序中某个变量或者表达式的值,只要发 阅读全文

posted @ 2020-10-17 22:37 面具下的戏命师 阅读(1279) 评论(0) 推荐(0) 编辑

摘要:GDB程序启动和断点设置 前面章节介绍了如何启动GDB调试器,本节介绍如何在 GDB 调试器中启动(运行)程序,启动程序过程中的一些注意事项 以及借助 GDB 调试器在程序中的某个地方设置断点。 程序启动 根据不同场景的需要,GDB 调试器提供了多种方式来启动目标程序,其中最常用的就是 run 指令 阅读全文

posted @ 2020-10-16 21:16 面具下的戏命师 阅读(2474) 评论(0) 推荐(1) 编辑

摘要:GDB调试工具 GDB 全称“GNU symbolic debugger”,是 Linux 下常用的程序调试器。当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。 总的来说 阅读全文

posted @ 2020-10-16 17:23 面具下的戏命师 阅读(523) 评论(0) 推荐(0) 编辑

摘要:Makefile控制函数 Makefile 中提供了两个控制 make 运行方式的函数。其作用是当 make 执行过程中检测到某些错误时为用户提供消息,并且可以控制 make 执行过程是否继续。这两个函数是 "error" 和 "warning",我们来详细的介绍一下这两个函数。 $(error T 阅读全文

posted @ 2020-10-04 16:49 面具下的戏命师 阅读(178) 评论(0) 推荐(0) 编辑

摘要:Makefile目标汇总和变量的高级用法 规则中的目标形式是多种多样的,它可以是一个或多个的文件、可以是一个伪目标,这是我们之前讲到过的,也是经常使用的。其实规则目标还可以是其他的类型,下面是对这些类型的详细的说明。 强制目标 如果一个目标中没有命令或者是依赖,并且它的目标不是一个存在的文件名,在执 阅读全文

posted @ 2020-10-04 16:34 面具下的戏命师 阅读(1424) 评论(0) 推荐(1) 编辑

摘要:make命令详解 make 命令是系统管理员和程序员用的最频繁的命令之一。管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题。 在执行 make 命令时,有的时候需要加上一下参数选项来保证我们的程序的执行,其实之前已经遇到过 make 在执行命令的时候需要添加 阅读全文

posted @ 2020-10-04 15:49 面具下的戏命师 阅读(2753) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示