![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序调试
文章平均质量分 95
astrotycoon
这个作者很懒,什么都没留下…
展开
-
main函数之前发生了什么
未完待续原创 2020-06-26 23:30:10 · 383 阅读 · 2 评论 -
How statically linked programs run on Linux
How statically linked programs run on Linux 静态链接的程序是如何在linux系统上运行的 In this article I want to explore what happens when a statically linked program gets executed on ...翻译 2017-11-24 09:31:20 · 704 阅读 · 0 评论 -
Life Cycle of a Linux Program
Life Cycle of a Linux Program 一个程序的生与死(linux平台)This is an investigation of the life cycle of a program in a Linux system.本篇文章我将讨论的是一个程序在...翻译 2017-11-30 10:54:20 · 671 阅读 · 0 评论 -
捕捉信号SIGSEGV并回溯栈帧
引出问题在嵌入式应用程序开发过程中,调试一直是个老大难问题 -- 由于环境的限制,当程序发生段错误时不能很好的定位到底是哪里出现了错误,如果在程序发生段错误时能够清晰明了地看到程序的栈帧链,那无疑是雪中送炭。本文就捕捉信号SIGSEGV并在该信号的处理函数中打印出函数栈帧链来帮助我们调试程序。本文的程序适合ARM和X86平台。回溯栈帧原理理解函数栈帧的布局后,那么自然明白回溯栈帧的原理了,这里不多...原创 2015-04-27 20:43:21 · 7841 阅读 · 8 评论 -
源码级调试glibc
写在前面在以前的一篇《使用GDB调试C库》中提到过调试C库的问题,一开始的办法是使用ubuntu提供的libc6-dbg来调试,后来觉得这个办法并不完美,所以文章后续给出了使用源码编译glibc的办法,觉得还不够详细,因此这篇文章重新来叙述这个过程,力争详细并且简单明了。注意事项:(1)确保系统剩余磁盘不小于3个G,你不会想到编译调试版本的C库需要这么大的磁盘空间。(2)确保很多工...原创 2016-09-25 16:21:54 · 6091 阅读 · 5 评论 -
glibc函数exit源码分析
exit(3)函数源码分析!原创 2017-03-10 14:23:40 · 1289 阅读 · 0 评论 -
一段自己打印自己的C程序
今天发现了一段很有意思的C程序(http://blog.chinaunix.net/uid-233938-id-162628.html),实现的功能就是自己打印自已的内容。这其中的道理其实是在程序链接阶段做了手脚!先看程序如下:#include <stdio.h>#include <stdlib.h>extern char * _binary_test_...原创 2013-08-11 16:19:21 · 2457 阅读 · 0 评论 -
main函数之前发生了什么
参考链接:《Linux x86 Program Start Up》《The thorny path of Hello World》《Before Main()》(需梯子)《Life Cycle of a Linux Program | Glenn's Web Site》《main 之前与之后》《《程序员的自我修养》第十一章读书笔记》《How main() is exec...原创 2017-03-09 11:27:04 · 822 阅读 · 0 评论 -
Obtaining a stack trace in C upon SIGSEGV
水平有限,欢迎修正下载地址:http://ishare.iask.sina.com.cn/f/34603288.html或者:http://download.csdn.net/detail/astrotycoon/4751733翻译 2012-11-09 22:29:54 · 1297 阅读 · 0 评论 -
StackTraces
很好的资源,有时间时看看https://fedoraproject.org/wiki/StackTraces#gdb原创 2012-11-09 23:27:05 · 854 阅读 · 0 评论 -
linux下利用backtrace追踪函数调用堆栈以及定位段错误
一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 int backtrace(void **buffer,int size)该函数用于获取当前线程的调用原创 2012-11-02 23:39:38 · 14735 阅读 · 6 评论 -
使用GDB调试C库
用gdb调试程序时,一般的函数都可以step进去,可是C库函数却直接跳过了。网上找了些资料,记录一下!1.安装C库的debug版本sudo apt-get install libc6-dbg安装完后,在/usr/lib目录下会多出一个debug目录,里面有安装的debug版c库的动态链接文件2.编译程序,使用debug版本C库例如程序test.c,使用如下命令编译。原创 2012-10-27 17:26:23 · 5904 阅读 · 0 评论 -
Stack Backtracing Inside Your Program
一篇很好的文章,我翻译的,如有翻译的不准确,欢迎指出修正。下载地址:http://ishare.iask.sina.com.cn/f/34561118.html翻译 2012-11-06 22:41:02 · 1104 阅读 · 0 评论 -
简单的栈回溯 & 简单的栈回溯欺骗 -- 简单分析
原文地址在: http://hi.baidu.com/iceboy_/item/924f349e10c9fbcfb62531f7#对于我这样的新手好长时间才看懂,本文就那篇文章中的程序来简单分析一下。程序如下:#include #include #include #pragma warning(disable: 4311 4312 4313)int fake_ebp原创 2012-11-11 14:40:23 · 10859 阅读 · 0 评论 -
链接时重定位
未完待续!原创 2017-06-04 15:52:15 · 541 阅读 · 0 评论 -
加载时重定位
未完待续原创 2017-06-04 15:52:54 · 511 阅读 · 0 评论 -
使用bochs调试grub2
写在前面一直以来,对grub这样的引导程序充满好奇,有人说他其实就是一个小型的操作系统。因此有什么办法让我来调试它吗? 当然有,本文就简单记录一下利用bochs模拟器搭建调试grub2环境的方法。在网上找过相关资料,都是比较陈旧的文章,不是相关参数最新的grub已经不支持,就是最后不成功。写本文时(2017-6-28 10:18:13)我去官网看了下,当前grub2的最新版本是2....原创 2017-06-28 10:23:17 · 1610 阅读 · 0 评论 -
X86和X86-64的函数栈帧结构以及调用约定
写在前头对于函数栈帧(stack frame)的概念我是早就知道的,对x86的栈帧结构也算的上熟悉,之所以写这篇文章是因为我发现X64平台函数参数传递与X86有很大不同,X64增加了很多寄存器的使用。索性总结一下,供自己以后查阅学习!如有错误的地方,还请读者指出!写这篇文章主要参考了Eli Bendersky的两篇文章,个人非常喜欢他的文章,总能用探索式的博文将技术细节呈现在我的眼前!...原创 2017-01-19 18:57:21 · 2763 阅读 · 0 评论 -
小谈链接选项-Bsymbolic
未完待续!参考链接:《记一个链接库导出函数被覆盖的问题》原创 2017-06-13 16:27:47 · 4198 阅读 · 0 评论