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包后,再部署启动,恢复正常~~~



隐语第四课:快速上手-SecretFlow的安装和部署 隐语课程,继续学习隐私计算技术 阅读详情

相关推荐

思科9117AP从零配置EWC模式实战:Wi-Fi6网络搭建避坑指南

本文详细介绍了思科9117AP在Wi-Fi6网络环境下配置EWC模式的实战指南,涵盖镜像准备、网络环境配置、模式转换步骤及高级运维技巧。通过EWC模式,企业可实现控制器与AP的一体化部署,显著降低成本和简化运维,特别适合中小企业Wi-Fi6网络搭建。

weixin_28318011的博客 333

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

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

Technology changes the world of life 7682

Ubuntu22.04系统安装及配置

下载Ubuntu22.04系统镜像(下载地址:链接:https://caiyun.139.com/m/i?提取码:fLRJ),结合rufus和系统镜像制作USB启动盘,在物理机服务器上通过USB启动盘进行安装;或通过Esxi虚拟化平台创建虚拟机,然后在虚拟机中使用系统镜像进行安装。

cheagoun的博客 8万+

mysql jdb_使用JDB进行调试

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

weixin_30773813的博客 494

从零到一:使用阿里云百炼搭建企业级 AI Agent 完全实战手册(2026超详细版)

本文是一份企业级AI Agent构建手册,主要面向企业技术负责人、AI产品经理和后端开发工程师。手册详细介绍了如何在阿里云百炼平台上搭建企业智能体应用的全流程,包括环境准备、知识库构建、智能体创建、工具集成、工作流编排等核心环节。重点内容包括: 准备工作:阿里云账号注册、百炼服务开通、免费额度领取、API Key管理 知识库构建:文档格式要求、内容优化原则、RAG系统搭建 智能体开发:Agent创建、工具集成、复杂业务工作流设计 生产部署:多渠道接入、监控运维、安全治理 成本控制:Token预算管理、选型决

u010323587的专栏 1086

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 102

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

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

nanxiaotao的博客 2262

手把手教你用Kokoro-82M-v1.1-zh搭建本地TTS服务(含WebSocket接口)

本文详细介绍了如何使用Kokoro-82M-v1.1-zh模型搭建本地TTS服务,包括环境配置、模型部署、WebSocket接口实现及性能优化。通过实战指南,开发者可以快速掌握本地部署TTS系统的关键技术,提升语音交互应用的开发效率。

weixin_30776273的博客 183

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

信贷审批中的那些坑:从零开始搭建风控策略体系的5个关键步骤

本文深入探讨了信贷审批中的风控策略体系搭建,从数据陷阱识别、规则冲突诊断到反欺诈攻防,提供了5个关键步骤的实战指南。重点解析了如何通过特征工程、决策树优化和模型可解释性技术,构建动态平衡的风控体系,有效降低逾期风险并提升审批效率。

weixin_29253711的博客 412

第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)

核心目标:学会安装、卸载、管理OpenClaw技能,自定义AI代理的性格与权限,让AI贴合自己的使用习惯。核心内容技能市场详解:ClawHub市场核心技能分类(办公、学习、开发、生活),热门技能推荐(web-search、文件处理、邮件管理)[superscript:3][superscript:4]。技能安装与卸载:终端命令实操(openclaw skill install/uninstall),技能更新与版本管理[superscript:3]。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1756

JDB-Java调试器

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

qq_30436011的博客 1561

如何懂固高卡以及滚筒轴+平移轴配合运动?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 847

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

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

weixin_35987446的博客 332

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用JDB进行调试

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

WeiPeng2K的博客 3512

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【java】jdb调试java代码

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

远方不远 889

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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、付费专栏及课程。

余额充值