【问题标题】:ptrace Java program using C/C++使用 C/C++ 的 ptrace Java 程序
【发布时间】:2013-07-20 04:53:42
【问题描述】:

我遇到的问题与我之前提出的here 类似。

这次我想用c/c++编写的程序来跟踪JAVA程序的执行。因此,正如我之前所说,跟踪 c/c++ 的标准输出打印并注册系统调用 4 的相同代码还没有为 JAVA 完成。我认为这是因为我跟踪的 execlp 仅用于运行 jvm。后来创建了更多我不跟踪的进程(通过jvm的内部机制)。我发现这个topic 似乎是部分解决方案。如果我做对了,每个孩子都会被追踪。但这也是一个问题,我只想跟踪处理我的应用程序的进程,而不是 jvm 可能创建的所有其他进程。有没有机会知道哪个 jvm 线程/进程处理我的程序并只跟踪它?

为了方便一点,我们假设我的 JAVA 程序是单线程的。

【问题讨论】:

    标签: java c linux system-calls ptrace


    【解决方案1】:

    如果您通过跟踪器应用程序启动二进制文件,所有线程都将被跟踪。

    但是,如果您附加到一个进程,那么您将不会附加到它的所有线程。您必须使用 threadids 附加到其所有线程,您可以找到例如列出的。在 /proc/%d/task/ 中。

    另外,我建议阅读 strace 的源代码,我从中学到了很多东西。如果你可以使用 strace 成功地随心所欲地跟踪 java 线程,你就可以从中获取逻辑。

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 2020-11-30
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多