2010-11-24 3 views
1

우리는 현재 이전 VB6 응용 프로그램에 대한 버그 수정을 테스트하고 있습니다. 초기 버전의 프로그램은 PID를 가져 와서 int에 저장 한 다음 데이터베이스에 씁니다. 이것은 응용 프로그램이 32768보다 높은 PID를 할당받을 때까지 제대로 작동합니다.이 경우 오버플로가 발생하고 응용 프로그램이 종료됩니다.Windows에서 높은 PID 강제로

int 대신 long을 모두 변경하여이 문제를 해결했습니다. 하지만 이제 우리는 테스트 문제가 있습니다. 우리는이 문제를 우리 프로덕션 환경에서는 거의 볼 수 없지만 (문제 발생시에는 엄청난 영향을 미칩니다) 결코 테스트하지 않습니다. 나는 많은 프로그램을 생성하여 높은 PID를 도발하려했지만 PID 25000을 넘지 못했습니다.

나는 HighPid (http://winprogger.com/?p=) 도구를 발견했습니다. 29)하지만 슬프게도 약속을 지키지 않는 것 같습니다. 그렇다면 비슷한 (그러나 작동하는) 툴이나 윈도우 서버에 높은 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 
} 
관련 문제