GDB、监控JVM、LLDB、内存层级结构

一、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循环、一行一行比一列一列的循环好,因为内存层级结构中的缓存有关

在这里插入图片描述

用心开发、注意细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值