首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java的strace或procmon等效项

java的strace或procmon等效项
EN

Stack Overflow用户
提问于 2018-01-13 16:28:18
回答 2查看 1.1K关注 0票数 2

当我运行一个C++程序时,它显示“无法打开文件”,但没有说出文件名是什么,我通常使用strace (Linux)或procmon(Windows)来找出它试图打开哪个文件以及在哪里查找它。

我不能用java程序做到这一点,因为所有这些都是由java vm控制的。我处理的一些jars/类都有配置文件,这些文件是可选的。有时,知道这些配置文件(比如javafx程序的.css文件)的名称会很好,尤其是在没有错误报告的情况下。

如果我不能访问源代码,例如,当我得到一个.jar或.class文件时,有没有等同于strace (Linux)或procmon (windows)的java,或者是某种调试选项的组合,让java VM列出它试图打开的文件或在哪里查找这些文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-15 19:16:15

在折腾了很久之后,看起来它又回到了strace。

代码语言:javascript
复制
strace -f java xxx | egrep openat 1> files.log 2>&1

然后看看files.log。我不喜欢的是java将可执行文件作为一个不同的进程启动。strace -f也会跟踪派生的进程。

openat是打开文件的调用。有许多打开的类,jar和.so文件。一旦这些文件被取出,剩下的就是所有其他的文件。

票数 1
EN

Stack Overflow用户

发布于 2018-01-13 16:31:29

在linux中尝试使用lsof,它可以列出进程打开的文件,如果它是您想要的文件,或者您可以随时附加JVM调试器。或者如果你对java类加载器有更多的了解,你可以用它来找出答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48238198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档