社区
Java SE
帖子详情
JAVA或者C#中如何获取并输出调用堆栈上的变量值?
liyin_first
2009-06-18 11:09:40
有这样一个需求:
当程序崩溃抛出异常的时候,想把调用堆栈中的变量值都答应出来,方便查找错误。不知道eclipse调试的时候,是怎么做到查看变量值的?
在晚上搜索了半天都没有满意的结果,希望高手能够给个方案,或者是一个思路就行!
谢谢!!
...全文
507
15
打赏
收藏
JAVA或者C#中如何获取并输出调用堆栈上的变量值?
有这样一个需求: 当程序崩溃抛出异常的时候,想把调用堆栈中的变量值都答应出来,方便查找错误。不知道eclipse调试的时候,是怎么做到查看变量值的? 在晚上搜索了半天都没有满意的结果,希望高手能够给个方案,或者是一个思路就行! 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mary_zhang_YINNG
2009-07-02
打赏
举报
回复
试试用log来获取运行程序的信息
joyoo_cn
2009-07-02
打赏
举报
回复
用断点,然后单步靠近异常抛出点,就可以读debug视图中的变量值了。
angel6709
2009-06-22
打赏
举报
回复
ding
iefus
2009-06-21
打赏
举报
回复
沙发
holsten32
2009-06-20
打赏
举报
回复
顶
liyin_first
2009-06-19
打赏
举报
回复
to yejinson,这位朋友没有理解我的意思吧。我再详细说一下需求。
比如一段代码
class C {
int i;
void A() {
}
}
//另外一段调用代码
try {
C c = new C();
c.A();
}
catch(Excetion e) {
//如何在这里获取到变量c的值
}
zhouzongjiu
2009-06-18
打赏
举报
回复
顶一个
bigbug9002
2009-06-18
打赏
举报
回复
用e.printStackTrace();
如果你是说你程序中的用到的堆栈,可以在finally{}块中把堆栈的内容输出来。
fosjos
2009-06-18
打赏
举报
回复
估计是直接调用jvm的吧
不过程序崩溃抛出异常,已经退出了,不可能再去访问堆栈了
qsrock
2009-06-18
打赏
举报
回复
帮顶一个!看debug的源码是怎么写的!
让爱延续
2009-06-18
打赏
举报
回复
我学C#的,在vs2005的开发环境中设断点,可以使用单步执行,每执行一步看一下局部变量就可以了!
在eclipse中也能这样执行的, 好像有个叫 什么debug的就是
yejinson
2009-06-18
打赏
举报
回复
堆栈你都得到了, 还搞出来?
String var = "Hello World";
new Exception(var);
StackTraceElement[] elements = e.getStackTrace();
e.getMessage(); // 变量var的值
for (int i = 0; i < elements.length; i++){
StackTraceElement element = elements[i];
element.getClassName();
element.getLineNumber();
element.getMethodName();
element.toString();
}
这些不是可以操作了吗, 楼上有个朋友已经说了吗
liyin_first
2009-06-18
打赏
举报
回复
ms无法解决。。。
方法调用堆栈可以得到,但是具体里面的变量值这才是我想要得到。
自己顶一下
laorer
2009-06-18
打赏
举报
回复
StackTrace ss = new StackTrace(true);
String flName = ss.GetFrame(1).GetFileName();// GetMethod().DeclaringType;
int lineNo = ss.GetFrame(1).GetFileLineNumber();
String methodName = ss.GetFrame(1).GetMethod().Name;
这是 C# 的调用栈上的内容, 至于具体变量值,不清楚....
java 中也有一个,
StackTraceElement calledSte = getCallStackTraceElement();
int lineNo = calledSte.getLineNumber();
String className = calledSte.getClassName();
String methodName = calledSte.getMethodName();
JS基础---
调用
堆和栈
调用
堆和栈 先进后出策略 引擎主要有两部分组成: 内存堆:这是内存分配发生的地方
调用
栈: 这是你代码执行时的地方 web APi 事件循环 回调队列 内存堆:这是内存分配发生的地方。当V8引擎遇到变量声明和函数声明的...
c#
快速入门~在
java
基础上,知道
C#
和
JAVA
的不同即可
c#
中
的类,类的定义-成员变量、成员方法,类的构造函数,类的实例化、
调用
类的成员变量、方法,都是和
java
一模一样的!由于结构是值类型,并且直接存储数据,因此在一个对象的主要成员为数据且数据量不大的情况下,...
比较
C#
和
Java
本文对比了
C#
与
Java
这两种编程语言,这两种语言都具有自动垃圾回收以及运行时编译执行的特点,并且两者的语法都有主要继承自C语言/C++,因此二者有很多相似之处。...但需要注意,这
C#
和
Java
并非C或者C++的超集,它们
.NET/
C#
如何
获取
当前进程的 CPU 和内存占用?如何
获取
全局 CPU 和内存占用?
都知道可以在任务管理器
中
查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来
获取
到 CPU 和内存占用呢? .NET
中
提供了 PerformanceCounter 类型,可以用来监视系统
中
大量的性能问题。 本文内容
获取
...
java
栈new_在结构上使用“new”是否在堆或
堆栈
上分配它?
首先,Ash是对的:问题不在于值类型变量的分配位置 . 那个's a different question - and one to which the answer isn'只是"on the stack" . 它比那更复杂(并且由于C#2而变得更加复杂) . 我有一个article on the ...
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章