java jdb 命令行调试程序

43、Java开发实用工具与技巧 本文介绍了Java开发中的几个实用工具和技巧,包括Java文档标签、jar文件归档工具的使用方法、jdb调试器的功能与操作、系统属性的设置与读取等内容。通过这些工具和技巧,可以提高Java开发效率,优化程序运行环境。适用于小程序部署、程序调试以及动态配置场景。 阅读详情


日常的可以远程debug程序,线上程序查看线程堆栈和日志寻找线索。还不够的话可以使用jdb进行命令行debug程序。


(1)修改java启动脚本,把远程调试端口打开

JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"


(2)程序运行起来

(3)attach jdb到程序上,在程序所在机器上运行 下面的脚本

$JAVA_HOME$/bin/jdb -attach 127.0.0.1:8787


如果没有设置jdwp,会失败,显示下面的信息:


如果成功,会显示下面的信息


main是主函数入口

(4)指定断点,运行

在这个类的74行指定断点,使用stop at 语句,后面跟着类的全路径。冒号分隔,后面是行号。

stop at com.taobao.jingwei.server.core.ServerCoreThread:74
回车,后在看到提示符main[1] , 输入 run,回车;

看到程序被断在line=74行的地方,这时对照源代码,进行调试。

next是执行下一步,相当于F6


(5)要查看局部变量,输入locals。


step 表示进入方法,相当于eclipse的F5。

(6)使用dump查看对象的值


(7)内部类如何stop断住?

jdb有两个语法,一个是stop at(行号)和stop in(方法)

stop in com.taobao.jingwei.core.internal.extractor.Metaq3Extractor$MetaOrderMessageListener.consumeMessage

(8)线程运行的位置 where all,告诉所有线程的当前运行位置


(9)一个实际的例子:现象是多台机器(20)消费metaq的消息,但是有部分分区消费失败,有的机器可以成功消费,有的机器却消费失败。

metaq消费回调看到消费失败的日志,但是精卫没有打印任何异常,业务的apply方法内部打开了debug,如果收到消息也会打印到指定目录的文件,但是没有收到日志。只好jdb上调试了。



一步一步的,追到了异常抛出的地方。

org.apache.thrift.protocol.TProtocol.getScheme()Ljava/lang/Class;

应该是包冲突,查看含有thrift的包

thrift-0.2.0.jar 和 libthrift-0.8.0.jar两个包,排除掉thrift-0.2.0.jar(因为dbsync使用的是 libthrift-0.8.0.jar),重启,发现没有效果,还是会抛出异常。在eclipse中查找这个类TProtocol (Ctl+Shift+T),发现hive-core这个包含有同名的类TProtocol,而且包路径也相同。其实系统没有用到hive,所以排除掉这hive-core包后,再部署启动,恢复正常~~~



Rockchip eMMC寿命监控:SMART信息读取与预防性维护 擦写计数坏块数量温度使用时间。 阅读详情

相关推荐

ArcGIS渔网分割实战:用Create Fishnet快速生成1km×1km网格(附GDP数据分析案例)

本文详细解析了ArcGIS中Create Fishnet工具在渔网分割中的应用,从基础操作到GDP空间分析全流程。通过1km×1km网格的创建与优化,实现经济数据的空间标准化和可视化表达,解决数据融合与分析的三大核心痛点。

weixin_29250403的博客 295

【Java可执行命令】(六)调试工具 jdb:深入解析应用程序调试工具jdb ~

jdb是一个功能强大且灵活的 Java 调试器,提供了一系列功能和选项来帮助开发者定位、调试和修复 Java 应用程序中的问题。通过设置断点、单步调试、监视变量等操作,开发者可以深入了解程序的执行状态,并进行错误排查和性能调优。尽管jdb的命令行界面对于新手而言可能有一定的学习曲线,但通过熟悉其语法和常用选项,开发者可以更加高效地利用jdb进行调试工作。同时,需要注意在合适的情况下使用jdb,并遵循最佳实践以确保有效地使用调试器工具。

Technology changes the world of life 7682

STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析

本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。

weixin_29184371的博客 234

mysql jdb_使用JDB进行调试

在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种。JDB是 The Java Debugger 的简称,它可以用来debug一个Java程序,同时它是 JPDA 的一个参考实现,只是这个实现是基于命令行的。提到命令行,有些同学心里就犯嘀咕了,离开了GUI,能debug吗?当然可以,只要熟记几个命令,在...

weixin_30773813的博客 494

瑞芯微RV1126B芯片实战:如何用3Tops NPU打造智能安防摄像头(附配置指南)

本文详细介绍了基于瑞芯微RV1126B芯片构建高性能智能安防摄像头的实战经验。文章深入剖析了其3Tops NPU与独立AI-ISP的协同优势,提供了从硬件选型、开发环境搭建、AI模型部署到系统调优的全流程配置指南,帮助开发者充分发挥芯片潜力,实现高效、稳定的智能视觉应用。

weixin_29281915的博客 443

【车辆仿真】从0开始建立dSPACE RT Simulink工程:CAN通信(RTICANMM方法)

【工程环境信息】:本文基于链接文章搭建SCALEXIO Rack RTPC总线节点,用于与AutoBox通信硬件:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):AutoBox (DS1006)板卡:DS6342软件:本文所使用的DBC链接提示:以下是本篇文章正文内容,下面案例可供参考!!!的部分一定记得配置,其他的按需配置RTICANMM的灵活度非常高,尽可能参考Help文档,理解相应的配置内容官方有RTICANMM的样例工程,在下方路径。

winnizap的博客 2381

Java调试之JDB命令行调试入门

Java 调试器 (JDB) 是一个简单的 Java 类命令行调试器。 jdb 命令及其选项调用 JDB。 jdb 命令演示了 Java 平台调试器架构,并提供本地或远程 JVM 的检查和调试。

nanxiaotao的博客 2262

Cartographer实现双雷达建图

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。

Studying…… 1261

JDB的使用

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 背景 在本地开发的时候一版遇到问题都是通过debug去排查调试,如果在测试环境有问题需要调试,那么就可以采用JDB的方式,其实idea等开发工具debug的原理也是这个。前提是要指定debug端口。 所有的操作都要先打断点 1、线上程序使用jdb jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid= 例如: jdb -connect sun.jvm.hotspot.jdi.SAP

cz1803472613的博客 2996

Unity音游开发全指南:模板与免费资源高效构建节奏游戏

**粒子特效** | [Universal VFX](https://assetstore.unity.com/packages/vfx/particles/universal-vfx-159182) | 免费视觉特效 || **UI素材** | [Game UI Pack](https://assetstore.unity.com/packages/2d/gui/game-ui-pack-86908) | 现代风格UI元素 |**音游开发的黄金法则**:完美的节奏游戏是音乐与游戏的和谐统一。

Loving_enjoy的博客 727

微信文件自动归档!手把手教你用OpenClaw搭个自己的“数字员工”,告别重复劳动

很多人说“AI是未来”,但未来不是靠喊口号的。OpenClaw的真正价值,是让你把重复劳动交出去,把时间留给真正需要创造力的事。这事真能干,而且不难。下载OpenClaw(GitHub仓库按我写的步骤跑一遍遇到坑,评论区留言——我亲自帮你看作者后记:上周五,我让AI自动归档了文件后,终于在5点准时下班。回家路上,我给它发了条消息:“干得漂亮”。它没回,但我知道——它在默默等我的下一条指令。

2601_94871597的博客 413

JDB-Java调试器

JDB这款工具集成在JDK中,在安装Java时已经自带,不需要特殊安装。它是一款基于文本和命令行的调试工具,现在很多的Java IDE中都提供了完善的断点调试功能,很方便,这也导致很多的开发人员认为这很原始,既然有更好的调试工具选择,很多人都放弃使用这款工具。JDB基本用法如下代码所示。其中的options包括用于以有效的方式调试Java程序的命令行选项。JDB启动器接受所有选项(例如-D-classpath和-X)和一些其他高级选项,如(-attach-listen-launch等)。

qq_30436011的博客 1561

ASProxy64.dll导致jetbrains家的IDE都无法打开。

摘要:在Windows11系统中,JetBrains IDE无法启动,报错指向ASProxy64.dll文件。该第三方DLL被注入到JVM原生层,导致内存访问冲突(错误代码0xc0000005)。经排查发现此文件来自Astrill软件。解决方案为卸载Astrill后重启电脑,问题得以解决。该案例表明第三方DLL注入可能影响IDE正常运行,卸载相关软件是最直接的解决方法。(149字)

猿小白的博客 936

jsp调试java_调试从Tomcat(JSP)运行的Java程序

我不知道为什么我从来没有发现自己必须使用调试器来逐步检查程序并查看发生了什么事情,这可能是因为我习惯于使用诸如PHP之类的解释语言,在其中添加调试代码非常容易( print_r),并实时查看更改.但是,对于这个新的Java项目,我觉得我必须学习正确的调试方法.因此,我未编写此程序,它在Tomcat上运行并使用基本的JSP.问题是,当我尝试访问特定的JSP页面时,它将引发异常,并为我提供发生了什么的...

weixin_35987446的博客 332

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用JDB进行调试

       在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种。        JDB是 The Java Debugger 的简称,它可以用来debug一个Java程序,同时它是 JPDA 的一个参考实现,只是这个实现是基于命令行的。提到命令行,有些同学心里就犯嘀咕了,离

WeiPeng2K的博客 3512

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【java】jdb调试java代码

jdb调试java代码 Java程序中有逻辑错误,就需要使用JDB来进行调试了。调试程序在IDE中很方便了,比如这篇博客介绍了在Intellj IDEA中调试Java程序的方法。 我们课程内容推荐在Linux环境下学习,有同学问如何在命令行下调试Java程序,我们就要使用JDB了。 学习建议:Linux Bash下打开三个标签页 我们提倡在Linux命令行下学习Java编程。学习时在Ubu...

远方不远 889

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java命令行调试程序

第一部分 进入调试模式 通过jre提供的jdb程序可以实现命令行调试java程序。关于jdb的命令语法可以参考 官方文档。下面我讲通过实例手把手将大家学会命令行调试 Step 1 创建项目 1. mkdir -p ~/jdwp/src/main/java/com/jdwp/test 2. cd ~/jdwp/src/main/java/com/jdwp/test 3. t...

御风而行 1万+

jdb java_JDB - 介绍

JDB - 介绍调试是一种技术过程,用于查找和删除程序中的错误或缺陷并获得预期结果。 调试包括测试和监控。 当程序的子单元紧密耦合时,它非常复杂。 我们可以使用遵循规定API的调试工具来调试程序。 调试器允许您逐步执行代码的每个方面,检查所有元素,并删除错误(如果有)。调试技术调试Java程序有不同的技术。 旧的调试方法是在每个段的末尾使用print语句,它将在控制台上打印trace语句...

weixin_39737757的博客 1310

命令行工具jdb调试java程序

一直在gdb 下调试c/c++程序。 突然要写个java程序,又不是很喜欢使用eclipse,那怎么调试程序呢。你还可以使用 jdb。 它是jdk 内置的一个java debug工具。类似与 gdb。不过功能稍弱,但也已经很值得敬佩了。 假如你的java源代码是 hello.java 文...

chenhang8946的博客 352

jdb调试Java程序

记得初学Java语言时,老师让我们在记事本里面敲Hello World程序代码,然后通过javac命令编译代码,再通过java命令执行代码,告诉我们程序的流程,编写源代码 - 编译程序 - 执行程序,之后老师就告诉我们可以通过IDE编写程序,编译、执行程序很方便,不用自己通过手动命令方式去做,而且在IDE中还可以调试程序,让我们看到了使用IDE的便利,在之后所有的学习和工作时间都开始使用IDE进行程序开发,也确实很方便。但是有一个问题之前老师并没有讲,而且在书上也没有找到,那就是Java自带的命令中有没有用

zorro_z的博客 692

用jDB 调试Java程序

使用JDB调试Java程序 Java程序中有逻辑错误,就需要使用JDB来进行调试了。调试程序在IDE中很方便了,比如这篇博客介绍了在Intellj IDEA中调试Java程序的方法。 我们课程内容推荐在Linux环境下学习,有同学问如何在命令行下调试Java程序,我们就要使用JDB了。 学习建议:Linux Bash下打开三个标签页 我们提倡在Linux命令行下学习Java编程。学习时在U

zhipibu5247的博客 439

使用JDB进行windows下的Java函数追踪

JDB是JDK自带的命令行调试工具,可以跟踪主程序走过的函数。被调试的可以是一个没有源代码的Java程序,但是需要能在虚拟机启动时增加参数。

superslow的博客 687

使用jdb对tomcat进行远程调试

在工作中,经常遇到项目在生产系统遇到问题,而在测试环境或者开发环境不能复现,这时候一个重要的方法就是要在生产系统进行调试,这里调试分为两种: 使用开发工具(eclipse)进行远程调试;使用jdb进行远程调试,或服务器(生产系统)端调试; 首先介绍一下jdb,jdb即java debugger,是随jdk发布的java命令行调试工具,什么情况下需要用jdb工具进行调

u012007592的博客 3971

java调试 Linux_命令行工具jdb调试Java程序

一直在gdb 下调试c/c++程序。突然要写个Java程序,又不是很喜欢使用eclipse,那怎么调试程序呢。你还可以使用 jdb。它是jdk 内置的一个java debug工具。类似与 gdb。不过功能稍弱,但也已经很值得敬佩了。假如你的java源代码是 hello.java 文件。那么你需要编译的时候加上 -g 选项。这一点和 gdb 一致。怎么做?javac -g hello.java此时会...

weixin_42116701的博客 492

java 调试命令_命令行工具jdb调试Java程序

一直在gdb 下调试c/c++程序。突然要写个java程序,又不是很喜欢使用eclipse,那怎么调试程序呢。你还可以使用 jdb。它是jdk 内置一直在gdb 下调试c/c++程序。突然要写个java程序,又不是很喜欢使用eclipse,那怎么调试程序呢。你还可以使用 jdb。它是jdk 内置的一个java debug工具。类似与 gdb。不过功能稍弱,但也已经很值得敬佩了。假如你的java源代...

weixin_42299801的博客 354

安卓Hacking:Part 5:使用JDB调试Java应用

本期将为大家演示如何使用JDB命令行工具调试Java应用,尽管本文并不会涉及Android的相关内容,但却是理解本系列下一期“寻找可调试的安卓应用”前提。 什么是JDB? JDB是一个简单的Java命令行调试器,包含在JDK中。 我们在本文中将会使用一台Ubuntu主机,我们可以在/usr/bin中找到JDB: #cd /usr/bin #ls | grep jdb 提示:...

weixin_43639443的博客 362
上一篇: Linux中profile、bashrc、bash_profile之间的区别和联系
下一篇: python定义常量
arkblue
博客等级 码龄18年 188粉丝 254原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值