首页
博客
专栏课程
下载
问答
社区
会员中心
论坛
代码
直播
Chrome 插件
能力认证
导航
全部
Ada助手
...
Ada助手
登录/注册
社区
Java SE
帖子详情
JAVA或者C#中如何获取并输出调用堆栈上的变量值?
liyin_first
2009-06-18 11:09:40
有这样一个需求:
当程序崩溃抛出异常的时候,想把调用堆栈中的变量值都答应出来,方便查找错误。不知道eclipse调试的时候,是怎么做到查看变量值的?
在晚上搜索了半天都没有满意的结果,希望高手能够给个方案,或者是一个思路就行!
谢谢!!
...全文
给本帖投票
587
15
打赏
收藏
JAVA或者C#中如何获取并输出调用堆栈上的变量值?
有这样一个需求: 当程序崩溃抛出异常的时候,想把调用堆栈中的变量值都答应出来,方便查找错误。不知道eclipse调试的时候,是怎么做到查看变量值的? 在晚上搜索了半天都没有满意的结果,希望高手能够给个方案,或者是一个思路就行! 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
关于java的一个自动装箱的例子
>>
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
显示为
卡片
标题
链接
打赏红包
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();
C#
堆栈
和托管堆
堆栈
中
存储值类型。
堆栈
实际上是向下填充,即由高内存地址指向低内存地址填充。
堆栈
的工作方式是先分配内存的变量后释放(先进后出原则)。
堆栈
中
的变量是从下向上释放,这样就保证了
堆栈
中
先进后出的规则不与...
深入了解递归、堆与栈:
C#
中
的内存管理与函数
调用
递归是指一个函数直接或...在
C#
中
,堆通常用于存储对象实例和引用类型数据。与栈不同,堆的内存分配和回收过程相对较慢,但可以存储较大的数据结构,并且生命周期可以跨越多个方法
调用
。栈是一种遵循先进后出 (LIFO)
java
栈new_在结构上使用“new”是否在堆或
堆栈
上分配它?
首先,Ash是对的:问题不在于值类型变量的分配位置 . 那个's a different question - and one to which the answer isn'只是"on the stack" . 它比那更复杂(并且由于C#2而变得更加复杂) . 我有一个article on the ...
比较
C#
和
Java
本文对比了
C#
与
Java
这两种编程语言,这两种语言都具有自动垃圾回收以及运行时编译执行的特点,并且两者的语法都有主要继承自C语言/C++,因此二者有很多相似之处。...但需要注意,这
C#
和
Java
并非C或者C++的超集,它们
数据类型(
C#
与
Java
)
复合数据类型在
Java
和
C#
中
,类作为有字段、方法和事件的复合数据类型这一概念是相似的。(有关类继承的概念在名为继承与派生类(
C#
与
Java
)的主题
中
单独讨论。)
C#
引入结构的概念,结构是一种
堆栈
分配的复合...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
积分榜
荣誉榜
原力榜
学习榜
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章
手机看
关注公众号
客服
返回
顶部