1

我们目前正在测试一个旧的 VB6 应用程序的错误修复,该程序的初始版本将获取 PID 并将其存储在 int 中,然后将其写入数据库。这可以正常工作,直到您的应用程序被分配一个高于 32768 的 PID,在这种情况下,您会溢出并且应用程序会死掉。

我们通过将所有内容更改为 long 而不是 int 来解决此问题。但现在我们有一个问题测试。我们仅在生产环境中很少看到此问题(但在发生时会产生破坏性影响),并且从未在测试中看到。我试图通过产生大量程序来引发高 PID,但我从未设法让它超过 PID 25000。

我确实找到了一个名为 HighPid (http://winprogger.com/?p=29) 的工具,但遗憾的是它似乎并没有兑现它的承诺。那么有没有人有类似的(但有效的)工具,或者其他一些在 Windows 服务器上强制高 PID 的技巧?

4

2 回答 2

2

启动 32767 dummy 真的轻量级进程吗?;-) 100kb*32k = 3.2Gb,所以 RAM 不应该限制你。

于 2010-11-24T13:29:55.580 回答
1

您可以从不同的角度看待它并检测检索进程 id 的函数,例如(伪代码):

function GetPID()
{
    // ... retrieve process id

    #if DEBUG
      return pid + 32000;
    #else
      return pid;
    #endif
}
于 2010-11-24T13:42:01.397 回答