【问题标题】:Is there a way to generate trace from a program running on my windows?有没有办法从我的 Windows 上运行的程序生成跟踪?
【发布时间】:2021-01-18 09:29:06
【问题描述】:

我来自硬件工程背景。这个网站上可能已经存在我的问题的答案。

我以硬件工程师的身份使用某些程序,这些程序非常庞大和复杂。主程序依赖于许多较小的可执行文件来完成它的工作。有没有一种方法可以让我跟踪它调用的其他程序以及我在使用程序时使用的参数、它们何时开始和何时结束?

目的是能够编写一个 Python 脚本或 TCL 脚本来自动执行所有这些步骤。

【问题讨论】:

  • 这个广泛的问题似乎不适合这个网站,但如果你在 Windows 上,我建议使用Process Monitor。但是再一次,除了你想要的东西,你没有指定任何东西,而不是你知道如何做或者你正在使用什么样的系统,所以这里的人可能不会像你想要的那样为你做所有的跑腿工作。
  • 我正在使用 Windows 程序。这些程序是 Intel Quartus 和 Microsemi Libero。当我使用它们来合成和编译我的数字电路设计时,我想跟踪它们调用的外部 exe 以及它们传递给它们的参数。
  • “答案可能已经存在”——你搜索过吗?

标签: python tcl


【解决方案1】:

在 Linux 上,最简单的方法是使用 strace 跟踪所有系统调用,寻找 execve() 系统调用(实际上是开始运行另一个二进制文件)。由于大多数程序都会进行很多系统调用,因此会产生很多其他输出,因此您需要进行一些试验才能获得所需的信息。

# Hint: it's much easier to write the output to a file with the -o option
strace -o strace_dump.txt  your_program argument_1 argument_2 ...

macOS 上的等价物是 dtruss,但您应该仔细阅读如何使其工作:

在 Windows 上,似乎有几个选项:

【讨论】:

  • 适用于 Windows 的 Systrace,好的,我会检查一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 2020-11-27
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多