문제
이해하지 못하는 다소 이상한 오류가 발생했습니다. 내 웹 서비스가 내 네트워크 외부에서 작동하는지 확인하기위한 테스트로 설계된 C# 콘솔 응용 프로그램을 만들었습니다. 그 모든 것은 웹 서비스에 연결하고 연결하고 각 단계를 콘솔에 출력 한 다음 텍스트 파일에 작성하여 로그를 보낼 수있었습니다.
3 개의 XP 머신 (네트워크 내부, 2 개의 외부)에서 완벽하게 작동했습니다. Vista Machine (매니페스트 파일이 있음)이지만 내 상사 XP 머신에서 (그는 IT 가이 사람이므로 그가 무엇을하고 있는지 알고 있습니다) 매우 이상한 오류를 던졌습니다.
C : temp testwe ~ 1. Exe NTVDM CPU가 불법 지시를 받았습니다.
http://www.houseofhawkins.com/roger.jpg ">
나는 인터넷 검색을했고 그의 NTVDM이 버거가 났을 수도 있고 바이러스 나 무언가가 있었던 것처럼 보였다. 이들 중 어느 것도 사실이 아닌 것 같습니다. 나는 이것이 그런 식으로 실패하게하는 일이 일어날 일을 알 수 없다.
시스템 사용; System.collections.generic 사용; system.text 사용; System.io 사용;
네임 스페이스 testwebservice {클래스 프로그램 {filestream thefile = null; 스트림 작가 작가 = null;
static void Main(string[] args)
{
Program p = new Program();
p.testMe();
}
private void testMe()
{
Console.WriteLine("Entered main method about to create stream");
try
{
theFile = File.Create(@"jonTestWebService.log");
writer = new StreamWriter(theFile);
writer.AutoFlush = true;
try
{
message("Starting test at: " + DateTime.Now.ToLongTimeString());
Random rand = new Random();
message("creating new instance of webservice");
houseofhawkins.testweb webServ = new testwebservice.houseofhawkins.testweb();
message("calling hello world");
String helloResult = webServ.HelloWorld();
message("hello world result = " + helloResult);
int one = rand.Next(999);
int two = rand.Next(999);
message("calling maths method with " + one + " + " + two);
String mathResult = webServ.mytestMethod(one, two);
message("Math result is: " + mathResult);
message("Creating instance of CSJawbreaker");
CSJawbreaker.InformationService csj = new testwebservice.CSJawbreaker.InformationService();
message("trying to get the latest version number");
float version = csj.latestVersionNumber();
message("Version number: " + version.ToString());
message("");
message("Finished all processing at: " + DateTime.Now.ToLongTimeString());
}
catch (Exception ex)
{
writer.WriteLine("");
writer.WriteLine(ex.Message);
writer.WriteLine("");
}
}
catch (Exception ex)
{
Console.WriteLine("could not create stream Writer, " + ex.Message);
}
message("");
message("Press return to exit");
Console.ReadLine();
writer.Close();
theFile.Close();
}
private void message(String message)
{
if (theFile != null && writer != null)
{
Console.WriteLine(message);
writer.WriteLine(message);
}
}
}
}
위의 코드가 왜이를 수행 할 수 있는지 매우 멈 춥니 다. 그것은 내가 알고 싶어하는 일종의 일이며, 부분적으로, 이것은 실제 클라이언트 기계에 일어날 수 있거나, 내 상사 기계가 감염된 것입니다.
고맙습니다
해결책
NTVDM에서 끝나면 XP의 16 비트 DOS 에뮬레이션 레이어이므로 뭔가 잘못되었습니다. EXE를 재시험 한 후 다시 발생하면 Boss의 PC (.NET Framework 버전 등)에 설치된 소프트웨어를 조사 할 것입니다.
또한 WindBG에서 이것을 실행하여 어디에서 끝나는 지 확인하고, 결함이 나면 전화 스택을 받으십시오.