2010-11-24 8 views
1

現在、古いVB6アプリケーションのバグをテストしています。初期バージョンのプログラムはPIDを取得してintに格納し、データベースに書き込みます。これは、あなたのアプリケーションに32768より高いPIDが割り当てられるまでうまく動作します。この場合、オーバーフローしてアプリケーションが終了します。ウィンドウ内で高いPIDを強制する

intの代わりにすべてをlongに変更することでこれを修正しました。今はテストに問題があります。この問題は、本番環境ではめったに見られませんが(発生時には致命的な影響があります)、決してテストすることはありません。私は大量のプログラムを産み出すことによって高いPIDを誘発しようとしましたが、PID 25000を超えることはできませんでした.HighPid(http://winprogger.com/?p=)というツールが見つかりました。 29)しかし、悲しいことに、それは約束を伝えていないようです。だから、そこにいる人は、類似の(しかし働いている)ツール、あるいはWindowsサーバー上で高いPIDを強制する他のトリックを持っていますか?

+2

なぜあなたのコードでは、偽のない高いPID? –

+0

.NETで動作する新しいアプリケーションを入手するとすぐに破棄されている、すでにクラッシーなVB6アプリケーションにテストコードを追加したくない。これは私たちをこのプロセスの中で踏みにじることです。 – Grubsnik

答えて

2

実際に軽量のプロセス32767を起動しますか? ;-) 100kb * 32k = 3.2Gbなので、RAMはあなたを制限するものではありません。

+1

実際には、Windowsは現在4つの倍数のプロセスIDしか使用していないので、多くのプロセスは必要ありません(http://blogs.msdn.com/b/oldnewthing/archive/2008/02/28/7925962.aspx) –

+0

Windowsのように、プロセスIDごとに1947スレッドに制限されているようです。これは、私がテストアプリケーションのいくつかのインスタンスを起動しなければならないことを意味しました。 – Grubsnik

1

あなたは、異なる視点や機器からの(擬似コード)のようなものをプロセスIDを取得する機能を見ることができる:

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

    #if DEBUG 
     return pid + 32000; 
    #else 
     return pid; 
    #endif 
} 
関連する問題