2010-11-24 72 views
1

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

我们通过将所有内容改为long而不是int来解决此问题。但现在我们有一个测试问题。我们在生产环境中很少见到这个问题(但在发生时具有破坏性影响),并且从不进行测试。我试图通过产生大量程序来激发高PID,但是我从来没有设法通过PID 25000。

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

+2

为什么不是假的高PID在你的代码? – 2010-11-24 13:36:10

+0

当我们能够在.Net中运行一个新的应用程序时,不想将任何额外的测试代码添加到已经很脆弱的VB6应用程序中。这只是为了让我们在这个过程中度过。 – Grubsnik 2010-11-24 14:13:55

回答

2

推出32767虚拟真正轻量级的流程? ;-) 100kb * 32k = 3.2Gb,所以RAM不应该限制你。

1

你可以看它从不同的角度和仪器检索进程ID的功能,像(伪):

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

    #if DEBUG 
     return pid + 32000; 
    #else 
     return pid; 
    #endif 
}