摘要: (转载)http://www.cppblog.com/liu1061/articles/53762.html如果在Linux平台可以用gdb进行反汇编和调试。(转)2. 最简C代码分析 为简化问题,来分析一下最简的c代码生成的汇编代码: # vi test1.c int main() { return 0; } 编译该程序,产生二进制文件: # gcc test1.c -o test1 # file test1 test1: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, not stripped ... 阅读全文
posted @ 2013-05-16 23:45 robotke1 阅读(304) 评论(0) 推荐(0)
摘要: (转载)http://www.linuxdiyf.com/viewarticle.php?id=87603本产品的某些部分可能是从Berkeley BSD系统衍生出来的,并获得了加利福尼亚大学的许可。UNIX是X/Open Company,Ltd.在美国和其他国家/地区独家许可的注册商标。 模块调试器(Modular Debugger,MDB)是用于Solaris操作系统的高度可扩展的通用调试工具。《Solaris模块调试器指南》介绍如何使用MDB调试复杂的软件系统,尤其着重介绍了可用于调试Solaris内核以及关联的设备驱动程序和模块的工具。本书还包括对MDB语言语法、调试器功能和MDB模. 阅读全文
posted @ 2013-05-16 23:37 robotke1 阅读(398) 评论(0) 推荐(0)
摘要: (转载)http://www.cnblogs.com/shipfi/archive/2008/08/04/1260293.html1: 对于在应用程序中加入参数进行调试的方法: 直接用 gdb app -p1 -p2 这样进行调试是不行的。 需要像以下这样使用: #gdb app (gdb) r -p1 -p2 或者在运行run命令前使用set args命令: (gdb) set args p1 p2 可以用show args 命令来查看2. 加入断点: break <linenumber> break <funcName> break +offset break -o 阅读全文
posted @ 2013-05-16 23:20 robotke1 阅读(216) 评论(0) 推荐(0)
摘要: 对于在应用程序中加入参数进行调试的方法:(1)#gdba.out(gdb) r -p1 -p2(2)或者在运行run命令前使用set args命令:(gdb) set args p1 p2可以用show args 命令来查看当我们把Linux gdb当成一个参数如何传递呢? 阅读全文
posted @ 2013-05-16 19:56 robotke1 阅读(3152) 评论(0) 推荐(0)
摘要: 在gdb中没有专门清屏的命令,但是它可以执行shell中的命令进行清屏clear。(gdb) help shellExecute the rest of the line as a shell command.With no arguments, run an inferior shell.(gdb)shell clear执行shell clear命令就可以进行清屏了。 阅读全文
posted @ 2013-05-16 18:56 robotke1 阅读(1465) 评论(0) 推荐(0)
摘要: (转载)http://www.cnblogs.com/dongzhiquan/archive/2013/04/11/3013486.html有时为定位一些如头文件循环包含致编译不过问题,我们要知道头文件包含顺序。G++ -H 除了进行正常编译,还会打印每个头文件的名称。每个文件通过缩进表示它在包括堆栈中的深度。无效的预编译头文件也会打印出来;无效的预编译头文件打印...x,有效的打印...! #include <stdio.h>#include "head.h"int main(int argc, char* argv[]){ printf("gcc 阅读全文
posted @ 2013-05-16 18:19 robotke1 阅读(765) 评论(0) 推荐(0)
摘要: (转载)http://blog.sina.com.cn/s/blog_40e8bfb90100ur3d.htmlhttp://blog.chinaunix.net/u3/104010/showart_2275754.html曾看到printf的一道题,挺有意思,记录一下。floatvalue=1.0;printf("value_int = %dn",value);printf("value_float = %fn", value);应该输出什么?乍看这个题,很简单,浮点数1.0在内存中的存储形式是0x3f800000。float型在内存中占4Byte, 阅读全文
posted @ 2013-05-16 18:05 robotke1 阅读(1272) 评论(0) 推荐(0)
摘要: (转载)http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html1.前几天,我在读一本C语言教材,有一道例题: #include <stdio.h> void main(void){ int num=9; /* num是整型变量,设为9 */ float* pFloat=&num; /* pFloat表示num的内存地址,但是设为浮点数 */ printf("num的值为:%d\n",num); /* 显示num的整型值 */ printf("* 阅读全文
posted @ 2013-05-16 18:04 robotke1 阅读(223) 评论(0) 推荐(0)
摘要: (转载)http://www.linuxidc.com/Linux/2012-05/60736p3.htm备注: PC Linux:Ubuntu-10.10Linux用户:rootlighttpd版本:1.4.30gcc版本:4.4.5 1. 编译、安装1.1. 先到lighttpd官网下载对应版本的软件包:http://www.lighttpd.net/我下载的是 lighttpd-1.4.30.tar.gz1.2. 将压缩包解压到任意目录(我的是 /root/Desktop/common)得到文件夹 lighttpd-1.4.301.3. 在文件夹 lighttpd-1.4.30 中创建s 阅读全文
posted @ 2013-05-16 18:04 robotke1 阅读(383) 评论(0) 推荐(0)
摘要: (转载)http://hi.baidu.com/liqiyuanlhj/item/fe5d4948e24b701a886d10e31:将lighttpd的原码包、以土豆现用lighttpd配置文件为基础的lighttpd.conf文件、日志轮循工具cronologpcre-7.1.tar.gz存放到/usr/下2:tarxzvf/usr/pcre-7.1.tar.gzcd/usr/pcre-7.1./configureprefix=/usr/local/vianet/pcreCFLAGS=-O1makemakecheckmakeinstall3tarzxvf/usr/lighttpd-1.4. 阅读全文
posted @ 2013-05-16 18:04 robotke1 阅读(847) 评论(0) 推荐(0)
摘要: (转载)http://blog.csdn.net/allenlinrui/article/details/5964046可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:x/<n/f/u> <addr>n、f、u是可选的参数。(1)n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。(2)f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。(3)u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是 阅读全文
posted @ 2013-05-16 18:03 robotke1 阅读(3021) 评论(0) 推荐(0)