首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Linux知识积累

    Linux内核调试技术——jprobe使用与实现(六)

    1、jprobe使用实例 使用jprobe探测函数的入参值,需要编写内核模块。 在分析jprobe_example.c之前先熟悉一下jprobe的基本结构与API接口。 1.1、jprobe结构体与API介绍 struct jprobe结构体定义如下: ? 相关的API如下: int register_jprobe(struct jprobe *jp) //向内核注册jprobe探测点 void unregister_jprobe(struct 在模块的初始化函数中,调用register_jprobe函数向kprobe子系统注册my_jprobe,这样jprobe探测默认就启用了,最后在exit函数中调用unregister_jprobe函数卸载 2.2、注册一个jprobe实例 jprobe探测模块调用register_jprobe函数向内核注册一个jprobe实例,代码路径kernel/kprobes.c,其主要流程如下图: ? ?

    2.1K40发布于 2019-07-15
  • 来自专栏架构驿站

    【性能优化】昔日的王者-JProbe-Java内存分析

    关于JProbe JProbe是一个企业级的Java剖析器,提供对内存使用,性能和测试覆盖率的智能诊断。 通过一个统一,直观的控制台,JProbe提供了三种强大的分析工具: JProbe Memory - 内存分析工具可以帮助您快速找出和诊断内存泄漏和过剩垃圾收集的根本原因。 自动化 JProbe允许在夜间构建过程分析内存,性能和覆盖。 JProbe利用ANT(或Maven)构建任务,JUnit测试脚本和一个称为触发器的独特功能来实现自动化分析。 Eclipse插件 JProbe直接使用Eclipse Java IDE进行智能代码性能分析和解决问题。 通过Eclipse插件,JProbe提高代码测试的效率,并促进了自动化内存测试和代码优化最佳实践。

    59990编辑于 2022-03-25
  • 来自专栏全栈程序员必看

    使用jprobe建设镜面层叠的原则和见解

    帮你实现了上面说的那些本应该由你自己完毕的工作,这就是jprobe。总的来讲。jprobe的要点在于它实际上就是一个kprobe的prefunc。 ,改成了jprobe的entry函数,而栈信息一点都没有变。 那么我想说的或许正是你所想的,那就是使用jprobe能够实现一个镜像协议栈,我先将代码片断贴上: static struct jprobe steal_jprobe = { .entry = } jprobe_return(); return 0; } static struct jprobe steal_jprobe = { .entry = steal_ip_local_deliver (void) { unregister_jprobe(&steal_jprobe); } module_init(jprobe_init) module_exit(jprobe_exit) MODULE_LICENSE

    85820编辑于 2022-07-06
  • 来自专栏linux驱动个人学习

    Kernel调试追踪技术之 Kprobe on ARM64

    (). */ jprobe_return(); return 0; } static struct jprobe my_jprobe = { .entry ("Planted jprobe at %p, handler addr %p\n", my_jprobe.kp.addr, my_jprobe.entry); return 0; } static void __exit jprobe_exit(void) { unregister_jprobe(&my_jprobe); pr_info ("jprobe at %p unregistered\n", my_jprobe.kp.addr); } module_init(jprobe_init) module_exit(jprobe_exit /samples/kprobes/jprobe_example.c .

    97111编辑于 2024-04-03
  • 来自专栏嵌入式与Linux那些事

    【调试】kprobes(一)基本概念

    jprobe工作原理 jprobe是基于kprobe实现的,探测的位置在函数的入口点。它采用了一个简单的镜像原则来允许无缝访问被探测函数的参数。 jprobe程序的参数和返回值必须和被探测函数完全相同,并且必须始终以调用函数jprobe_return()作为返回值。 register_jprobe #include <linux/kprobes.h> int register_jprobe(struct jprobe *jp) 在地址jp->kp.addr处设置一个断点 处理程序应该有与被探测函数相同的参数列表和返回类型;在它返回之前,必须调用jprobe_return()。(处理程序实际上从未返回,因为jprobe_return()将控制权返回给Kprobes。) 另外,一个有jprobe或post_handler的探测点不能被优化。

    1.5K10编辑于 2023-03-24
  • 来自专栏Linux知识积累

    Linux内核调试技术——kprobe使用与实现(一)

    kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。 kprobes技术包括的3种探测手段分别时kprobe、jprobe和kretprobe。 fault_handler,其中pre_handler函数将在被探测指令被执行前回调,post_handler会在被探测指令执行完毕后回调(注意不是被探测函数),fault_handler会在内存访问出错时被调用;jprobe kprobes的特点与使用限制: 1、kprobes允许在同一个被被探测位置注册多个kprobe,但是目前jprobe却不可以;同时也不允许以其他的jprobe回掉函数和kprobe的post_handler post_handler或单步执行被探测指令时出现内存异常则会调用该回调函数; kprobe_break_handler_t break_handler:在执行某一kprobe过程中触发了断点指令后会调用该函数,用于实现jprobe

    5.3K21发布于 2019-07-15
  • 来自专栏云微的一点分享

    eBPF 入门开发实践教程二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用

    kprobes 技术包括的3种探测手段分别时 kprobe、jprobe 和 kretprobe。 fault_handler,其中 pre_handler 函数将在被探测指令被执行前回调,post_handler 会在被探测指令执行完毕后回调(注意不是被探测函数),fault_handler 会在内存访问出错时被调用;jprobe kprobes 的特点与使用限制:kprobes 允许在同一个被探测位置注册多个 kprobe,但是目前 jprobe 却不可以;同时也不允许以其他的 jprobe 回调函数和 kprobe 的 post_handler

    90120编辑于 2023-08-14
  • 来自专栏云微的一点分享

    eBPF 入门开发实践指南二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用

    kprobes技术包括的3种探测手段分别时kprobe、jprobe和kretprobe。 fault_handler,其中pre_handler函数将在被探测指令被执行前回调,post_handler会在被探测指令执行完毕后回调(注意不是被探测函数),fault_handler会在内存访问出错时被调用;jprobe kprobes的特点与使用限制: kprobes允许在同一个被被探测位置注册多个kprobe,但是目前jprobe却不可以;同时也不允许以其他的jprobe回调函数和kprobe的post_handler

    1.1K20编辑于 2023-02-24
  • 来自专栏用户10025783的专栏

    Linux内核调试技术——kprobe使用与实现

    kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。 本文首先简单描述这3种探测技术的原理与区别,然后主要围绕其中的kprobe技术进行分析并给出一个简单的实例介绍如何利用kprobe进行内核函数探测,最后分析kprobe的实现过程(jprobe和kretprobe kprobes技术包括的3种探测手段分别时kprobe、jprobe和kretprobe。 fault_handler,其中pre_handler函数将在被探测指令被执行前回调,post_handler会在被探测指令执行完毕后回调(注意不是被探测函数),fault_handler会在内存访问出错时被调用;jprobe kprobes的特点与使用限制: 1、kprobes允许在同一个被被探测位置注册多个kprobe,但是目前jprobe却不可以;同时也不允许以其他的jprobe回调函数和kprobe的post_handler

    3.1K30编辑于 2022-09-24
  • 来自专栏linux驱动个人学习

    Linux内核调试技术——kprobe使用与实现

    kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。 kprobes技术包括的3种探测手段分别时kprobe、jprobe和kretprobe。 kprobes的特点与使用限制: 1、kprobes允许在同一个被被探测位置注册多个kprobe,但是目前jprobe却不可以;同时也不允许以其他的jprobe回掉函数和kprobe的post_handler 该流程先不做详细推演分析,后面分析jprobe实现时再细细分析。 下一篇博文将介绍基于kprobe实现的jprobe内核跟踪技术。

    6.5K21发布于 2021-09-08
  • 来自专栏Linux知识积累

    Linux内核调试技术——kprobe使用与实现(五)

    这种情况一般用于实现jprobe,因此会调用curent_kprobe的break_handler回调函数,然后在break_handler返回非0的情况下执行单步执行,最后返回1。 具体在jprobe实现中再详细分析。

    2.8K60发布于 2019-07-15
  • 来自专栏北京宏哥

    Jmeter(四十九) - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)

    在这些情况下,最好使用Borland OptimizeIt或JProbe来分析应用程序。 您想要看到的是加载,内存和线程的常规模式。 任何不稳定的行为通常表示性能不佳或某种错误。

    1.7K51发布于 2021-06-10
  • 来自专栏JAVA烂猪皮

    Java 内存泄漏分析和对内存设置

    基本可以确定内存泄漏 内存使用量增长后又回落,出于一个动态平衡区间,基本排除内存泄漏 GC 日志只能帮忙找到是否有泄漏,找出内存泄漏的地方,需要依赖一些其他的工具 JProfile OptimizedIt JProbe

    2.2K22发布于 2018-08-03
  • 来自专栏linux驱动个人学习

    linux性能工具--ftrace框架

    两种异常指令来对任意地址进行插桩,在此基础之上实现了三种机制: kprobe: 可以被插入到内核的任何指令位置,在被插入指令之前调用kp.pre_handler(),在被插入指令之后调用kp.post_handler() jprobe : 只支持对函数进行插入 kretprobe: 和jprobe类似,机制略有不同,会替换被探测函数的返回地址,让函数先执行插入的钩子函数,再恢复。

    1.5K10编辑于 2022-09-28
  • 来自专栏终码一生

    掌握这几点,让你轻松搞定内存泄露、内存溢出!

    或堆转储快照:hprof ) 3、分析快照(或堆转储快照),定位问题 内存泄露、内存溢出和 CPU 100% 关系 常用 JVM 性能检测工具 Eclipse Memory Analyer、JProfile、JProbe

    2.8K20编辑于 2022-04-14
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    纳尼,Java 存在内存泄泄泄泄泄泄漏吗?

    这些工具包括 Plumbr 、Eclipse Memory Analyzer、JProbe Profiler、JVisualVM 等。 06.

    97940发布于 2019-10-15
  • 来自专栏开发技术

    JVM 常见线上问题 → CPU 100%、内存泄露 问题排查

    常用 JVM 性能检测工具     Eclipse Memory Analyer、JProfile、JProbe Profiler、JVisualVM、JConsole、Plumbr 参考 一次完整的

    3.1K20发布于 2020-10-09
  • 来自专栏纯洁的微笑

    纳尼,Java 存在内存泄泄泄泄泄泄漏吗?

    这些工具包括 Plumbr 、Eclipse Memory Analyzer、JProbe Profiler、JVisualVM 等。 06.

    82810发布于 2019-05-23
  • 来自专栏架构驿站

    一文带你深入探索 eBPF 可观测性技术底层奥秘

    函数将在被探测指令被执行前回调; (2)post_handler 会在被探测指令执行完毕后回调(注意不是被探测函数);‍ (3)fault_handler 会在内存访问出错时被调用; 2、Jprobe 其中最基本的便是 Kprobe 机制,Jprobe 以及 Kretprobe的实现都依赖于 Kprobe,作为 Linux 内核的一个重要的特性,Kprobe 是其他内核调试工具(perf,systemtap

    5K62编辑于 2023-09-15
  • 来自专栏米扑专栏

    内存泄漏检测工具

    JProbe-分析Java的内存泄漏。 3. JProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。

    8.5K30发布于 2019-02-19
领券