经常使用这些工具,有那么些功能却不常用,也不知道。

1. gdb

a.  .gdbinit

gdb运行时会首先加载 ~/.gdbinit文件

例如:我在debug时,每次都需要进行handle SIGBUS noprint pass来处理SIGBUS信号,这种情况就可以把它写入 .gdbinit文件。

在.gdbinit里也可以定义函

eg:  在.gdbinit里定义print_regs

def print_regs

i r eax ebx ecx edx

end

(gdb) print_regs

eax            0xbffff4a4    -1073744732

ebx            0x28bff4    2670580

ecx            0x902c5562    -1876142750

edx            0x1    1

b. 在GDB中,可以使用命令up或down在栈中移动!上下移动栈,查询变量和内存的值。这个有什么好处呢?

看看如下的例子就知道了test0(a){

int m = GetNumber();

test1(b);

}

test1(b){

test3(c);

}

执行到test3(c)的时候,如果你想看看test0中的变量m的值是多少,怎么办?这时就可以使用up了,up到test0的栈时就可以直接print m的值了。很方便!

c. 设置临时断点 tbreak

d. 如果watch变量不好用,可以watch它的地址

e. return 和jump命令

return :return 从函数退出,跳过剩下的语句。

jump :跳过或重新执行当前函数中的语句。

f. shared library

可以显示哪些DLL已经载入,并且为尚未载入调试信息的DLL载入调试信息

g. 按下Ctrl + C,只是暂停程序,程序还可以继续运行。

h. 注意设置条件断点有可能会影响执行速度。

如果需要在某条执行特别频繁的语句上设置条件断点,则比较好的方法是在代码中直接插入源代码做判断,这样速度更快。

2.  strace

在进行以下高度时可以考虑使用strace:

a. 查明哪些文件被打开了

b. 在OS全程中未捕获的错误或中断。用strace查找返回的错误值,并再次核对源代码 是否处理了这些值

c. 调试性能问题,看OS调用的频率

d. 查看内存分配、释放、映射的情况。

3. gcc

gcc -E 可以观察预处理器的输出。这样,宏出错时可以看看为什么。

4. 设置LD_DEBUGS有点用

$ export LD_DEBUG=libs

$ ./a.out

1715:    find library=libc.so.6 [0]; searching

1715:     search cache=/etc/ld.so.cache

1715:      trying file=/lib/i386-linux-gnu/libc.so.6

1715:

1715:

1715:    calling init: /lib/i386-linux-gnu/libc.so.6

1715:

1715:

1715:    initialize program: ./a.out

1715:

1715:

1715:    transferring control: ./a.out

1715:

hello

1715:

1715:    calling fini: ./a.out [0]

1715:

1715:

1715:    calling fini: /lib/i386-linux-gnu/libc.so.6 [0]

1715:

$ export LD_DEBUG=help

$ ./a.out

Valid options for the LD_DEBUG environment variable are:

libs        display library search paths

reloc       display relocation processing

files       display progress for input file

symbols     display symbol table processing

bindings    display information about symbol binding

versions    display version dependencies

all         all previous options combined

statistics  display relocation statistics

unused      determined unused DSOs

help        display this help message and exit

To direct the debugging output into a file instead of standard output

a filename can be specified using the LD_DEBUG_OUTPUT environment variable.

posted on 2011-05-17 21:14 hex108 阅读(2340) 评论(3)  编辑 收藏 引用 所属分类: Program

php gdb strace抓包,gdb,strace那些不常用的功能相关推荐

  1. php gdb strace抓包,Linux上进程追踪与调试(strace和gdb)

    引言: 我们某些服务出现故障的时候,我们都是根据屏幕的输出以及打印的日志来查找出出现了什么样的错误,但是有时候我们的很多守护进程启动正常却访问不到,比如我们使用Nginx服务,登陆web的时候,却迟迟 ...

  2. Wireshark抓包工具使用教程以及常用抓包规则

    Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析,不过要说明的是,这只是一个工具,用法是非常灵活的,所以今天讲述的内容可能无法直接帮你解决问题,但 ...

  3. 新款HTTP代理抓包工具Proxyman(界面美观、功能强大)

    不论是普通的前后端开发人员,还是做爬虫.逆向的爬虫工程师和安全逆向工程,必不可少会使用的一种工具就是HTTP抓包工具.说到抓包工具,脱口而出的肯定是浏览器F12开发者调试界面.Charles(青花瓷) ...

  4. 抓包工具fiddler都有哪些高级功能,一文带你全面了解它

    介绍与安装 下载地址:官网自己下载 抓包设置 有时候,我们的fiddler启动是正常的,但是就是抓不到包,原因有很多.但多数情况都是因为配置不正确,接下来我们就看下有哪些导致fiddler抓不到的设置 ...

  5. 抓包神器之Charles,常用功能都在这里了(转自https://blog.csdn.net/mxw2552261/article/details/78645118)...

    我们在开发网站项目的时候,我们可以通过浏览器的debug模式来看request以及response的数据,那么如果我们开发移动端项目没有网页呢?如何抓取数据呢? 前几天有个做服务端的师弟跟我说他不用抓 ...

  6. Wireshark抓包工具使用教程以及常用抓包规则 ——Powered By 死性不改

    原文地址: http://www.clxp.net.cn/article.asp?id=2288 内容: Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具 ...

  7. 功能测试必备:抓包工具的作用及常用抓包工具有哪些?

    大家好啊,我是大田 2022.03.30,日更第 53 / 365 天. 在测试工作中,需要抓包工具帮助定位前后端问题,当看到前端页面出现bug后,需要进一步判断是前端问题还是后端问题.同时可以利用抓 ...

  8. ubuntu下常用的抓包软件_macOS下最常用也最好用的几款解压缩软件,你值得拥有...

    360压缩没有macOS版本发布,不过Mac上有几款非常出色的压缩软件非常好用,当然如果你是Unix或者Linux用户转到macOS平台上的,你也完全可以在Terminal终端下使用解压缩命令解压或者 ...

  9. Linux抓包工具tcpdump详解

    原文链接 tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. ...

最新文章

  1. 某程序员为方便老婆工作,写了一些小工具给老婆用!如今老婆要离职,公司老板却要求必须把工具留下!网友:跟他收费!...
  2. ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator
  3. c语言对空指针memcpy,C语言memcpy 断错误
  4. Imageloader3-单例模式
  5. bike with a famous logo
  6. c语言变凉存储性,C语言数据的表示和存储(IEEE 754标准)
  7. 欧拉降幂(Euler_Power_Formula)
  8. 2020年电赛题目,命题专家们怎么看?
  9. python3.0 数据类型、万恶的编码、文件操作
  10. 服务器最小化安装后的优化脚本
  11. 快速开发框架工作笔记001---项目开发中整理_整合好的_springcloud快速开发框架_springcloud框架_springcloud架构
  12. js-对象深度克隆方法
  13. 事件分发机制 事件拦截 滑动冲突 MD
  14. Linux下用ffmpeg轉PSP影片 (MP4/AVC格式)
  15. 什么是计算机病毒?中国黑客教父告诉你
  16. C# SolidWorks二次开发-工程图-更换工程图图纸格式/模板
  17. java的cms系统_Java的CMS系统-赤兔云
  18. Python更新失败:SSL错误——Conda/Python
  19. Mask RCNN综述以及建筑物实例分割
  20. 给图片加水印的简单方法,手机图片加水印也可以用

热门文章

  1. 批量修改一张表格的多个sheet名
  2. 广州.Net俱乐部第二次聚会报道
  3. cathome 猫家 开发日记-底部导航
  4. An impassioned circulation of affection(尺取+预处理)
  5. Mysql5.6.x版本半同步主从复制的开启方法
  6. 【Python数据挖掘】回归模型与应用
  7. 用GSON 获取JSON数组属性
  8. js:select的选择改变事件,获取当前选择的值
  9. python基础之类的属性方法、魔术方法普通方法
  10. Spring MVC拦截器实现用户登录权限验证案例