在调试环境之外识别Delphi应用程序中的线程

时间:2012-05-04 06:12:07

标签: multithreading delphi debugging

我找到了一个使用wmi查询请求进程信息的应用程序(每个线程上的所有线程和更多信息)。我修改了这个应用程序来确定每个线程的CPU使用率。 (如果我的应用程序被称为'appy',则线程被命名为'appy / 0','appy / 1',...)

我的问题:有没有办法在IDE或其他调试环境之外轻松识别这些线程?

我知道有NameThreadForDebugging方法,但在调试环境之外无法访问。

有没有办法在创建该线程时分配自己的线程ID? 或者是通过创建字典并将该字典写入文件以便从外部访问来了解谁是谁(线程)的唯一方法。

提前致谢!

1 个答案:

答案 0 :(得分:4)

不,您无法分配自己的线程ID,线程ID由CreateThread函数分配给线程,并且在其生命周期内无法更改。正如您所说,在外部应用程序(而不是调试器)中识别线程的唯一方法是以某种方式与该应用程序共享线程标识。

但是,没有必要通过文件共享信息,例如,您可以使用共享内存块。它比使用文件更有效。

作为有关线程ID的引用,您可以通过GetCurrentThreadId函数获取注释:

  

在线程终止之前,线程标识符唯一标识   整个系统的线程。