![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
调试
文章平均质量分 57
墨一鉴
软件攻城狮
展开
-
GDB调试指南-断点设置
上篇《GDB调试指南-启动调试》我们讲到了GDB启动调试的多种方式,分别应用于多种场景。今天我们来介绍一下断点设置的多种方式。本文介绍了常见的断点设置方法,断点设置之后,可以便于我们后期观察变量,堆栈等信息,为进一步的定位与调试做准备。欢迎关注公众号【编程珠玑】转载 2023-09-16 18:41:59 · 1251 阅读 · 0 评论 -
x64 汇编 参数传递
参数传递在不同的系统上是不一样的windows称作 calling conventionrcx,rdx,r8,r9 用来存储整数或指针参数,按照从左到右的顺序xmm0,1,2,3 用来存储浮点参数其余参数会压入栈中。linux称作 ABI当参数在 6 个以内,参数从左到右依次放入寄存器: rdi, rsi, rdx, rcx, r8, r9。当参数大于 6 个, 大于六个的部分的依次从 “右向左” 压入栈中,和32位汇编一样。参数个数大于 6 个的时候H(a, b, c, d, e,原创 2022-01-06 22:43:43 · 3287 阅读 · 0 评论 -
gdb调试coredump(使用篇)
参考 https://blog.csdn.net/sunxiaopengsun/article/details/72974548转载 2021-12-15 22:28:19 · 568 阅读 · 0 评论 -
vscode 调试 go 程序
DebuggingThe Go extension allows you to launch or attach to Go programs for debugging. You can inspect variables and stacks, setting breakpoints, and do other debugging activities using VS Code’s Debugging UI.These debugging features are possible by usin转载 2021-12-01 08:00:00 · 3815 阅读 · 0 评论 -
gdb 如何跳过断点
https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint-only-break-after-the-point-is-reached-a-given-numbe原创 2021-11-16 21:26:02 · 1698 阅读 · 0 评论 -
怎么用 gdb find 命令搜索内存
原文怎么用 gdb find 命令搜索内存 ?本文,我们讲讲 GDB 命令 find。有时,当调试时,你需要查找程序内存中的特定字节序列。或者,你想查找特定目标的所有地址。内存中每 8 个字节一个字节序列,表示你想确定的地址。提醒一下,find 命令会返回所有匹配的地址;因此我们必须接受可能存在的错误结果。但能接受-我觉得。find 命令提供了另一种审查程序的方式。我们看看是怎么使用。Hello, world!首先,先写个简单的程序,用作示例。打开你喜欢的编辑器(例如,emacs 或 v翻译 2021-11-13 17:30:59 · 5821 阅读 · 1 评论 -
go 程序的调试
go 编译的程序默认包含调试信息,通过 -ldflags "-w -s" 可去除调试信息。其中-w 去掉DWARF调试信息,-s为去掉符号表。go 语言有多种调试方式,可通过 ide,gdb 等方式调试。ide 比 gdb 要方便不少。当没有 ide 时,使用 gdb 也不错。下面分享两个 gdb 使用技巧:# 有时 打断点不知道文件或函数路径可用下面的方法查找info sources # 列出所有源文件info functions # 列出所有函数## 搜索info sources xxxf原创 2021-11-13 16:00:00 · 1473 阅读 · 0 评论 -
curl 使用
curl cookbook 很不错的使用手册原创 2021-10-30 16:39:43 · 96 阅读 · 0 评论 -
gdb 调试出现 optimized out 的原因
用gdb调试程序打印变量值的时候出现 <optimized out>,百度了下发现是由于编译优化导致,查看程序 gcc 的编译参数带上了 -O2 参数用于优化编译,将其修改为-O0不进行编译优化后,调试就比较顺畅了。...转载 2021-10-26 18:49:02 · 3164 阅读 · 0 评论 -
Linux 系统调用追踪命令 strace
strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。在Linux系统中,用户进程不能直接访问计算机硬件设备。当进程需要访问硬件设备(如读取磁盘文件或接收网络数据等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可跟踪进程产生的系统调用,包括参数、返回值和执行所消耗的时间。若strace没有任何输出,并不代表此时进程发生阻塞;也可能程序进程正在执行某些不需要与系转载 2021-08-27 21:27:14 · 1952 阅读 · 0 评论 -
C 错误处理
C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码errno,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 errno.h 头文件中找到各种各样的错误代码。所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 errno 设置为 0,这是一种良好的编程习惯。0 值表示程序中没有错误。e...转载 2021-08-18 21:49:59 · 97 阅读 · 0 评论 -
gcc 生成目标文件
gcc 生成可执行文件gcc -o filename main.cgcc 生成动态链接文件Linux 下动态链接库(shared object file,共享对象文件)的文件后缀为.so,它是一种特殊的目标文件(object file),可以在程序运行时被加载(链接)进来。使用动态链接库的优点是:程序的可执行文件更小,便于程序的模块化以及更新,同时,有效内存的使用效率更高。GCC 生成动态链接库如果想创建一个动态链接库,可以使用 GCC 的-shared选项。输入文件可以是源文件、汇编文件或者目转载 2021-07-19 21:26:51 · 1330 阅读 · 0 评论 -
gdb 入门使用
官方文档http://sourceware.org/gdb/current/onlinedocs/gdb/确定文件是否可以gdb调试gdb 直接调试查看 没有调试信息 not gdb.png readelf 查看段信息 file命令查看strip 如果最后是stripped,则说明该文件的符号表信息和调试信息已被去除,不能使用gdb调试。但是not stripped的情况并不能说明能够被调试。 使用GDB调试编译时使用-g编译选项$ g..转载 2021-06-25 10:26:36 · 993 阅读 · 0 评论