一、GDB
介绍
:
GDB是GNU Project调试器,它使您可以查看另一个程序在“执行”期间正在执行的操作–或该程序崩溃时正在执行的操作。
GDB可以做四种主要的事情(以及支持这些事情的其他事情)来帮助您捕获行为中的错误:
• 启动您的程序,并指定可能影响其行为的所有内容。
• 使程序在指定条件下停止。
• 检查程序停止时发生的情况。
• 更改程序中的内容,以便您可以尝试纠正一个错误的影响,然后继续学习另一个错误。
GDB 调试器已经对 C、C++、Go、Objective-C、OpenCL、Ada 等多种编程语言提供了支持。
安装
:
sudo yum -y install gdb
gdb -v
文档
:
http://www.sourceware.org/gdb/
二、监控JVM
实现
:JDK内置了一些监控JVM的API接口,就是java.lang.management包,其中提供了很多MXBean的接口类用来监控JVM的数据。并且JDK也内置了很多工具用于监控Java应用,其中jconsole就是使用JMX实现的。
参考
:
https://github.com/chenshuaikang/jvm-monitor
三、MACOS使用LLDB
简介
:
macOS 默认使用 LLDB 来进行 C/C++ 程序的调试, LLDB 能够逐行调试程序,使开发者能够了解程序的变量值以及堆栈是如何变化的,一旦学会之后使用起来也比 printf 更加方便和简单,赶紧学起来吧。
常用命令
:
break (b) - 设置断点,也就是程序暂停的地方
run (r) - 启动目标程序,如果遇到断点则暂停
step (s) - 进入下一条指令中的函数内部
backtrace (bt) - 显示当前的有效函数
frame (f) - 默认显示当前栈的内容,可以通过 `frame arg` 进入特定的 frame(用作输出本地变量)
next (n) - 运行当前箭头指向行
continue (c) - 继续运行程序直到遇到断点。
四、嵌套for循环、一行一行比一列一列的循环好,因为内存层级结构中的缓存有关
用心开发、注意细节。