2012-03-07 8 views
2

저는 우분투에서 실행되는 C# 4.0 모노 응용 프로그램을 만들고 있습니다.모노 응용 프로그램이 디버거 외부에서 충돌합니다

디버그 모드와 릴리스 모드 모두에서 MonoDevelop에서 실행할 때 응용 프로그램이 올바르게 작동합니다.

그러나 나는 (디버그 및 릴리스 모드 중 하나) 응용 프로그램을 빌드하고이 오류와 함께 명령 줄에서 응용 프로그램 충돌을 시작하는 경우 :

* Assertion: should not be reached at mini-codegen.c:1402 

내가 응용 프로그램을 빌드하고 실행하는 경우 Mono Develop 내부에서 Run-> Debug Application을 선택하여 수동으로 실행해도 괜찮습니다. 나는 또한 here을 권장 먼저 DYLD_LIBRARY_PATHLD_LIBRARY_PATH 변수를 설정하는 쉘 스크립트를 사용하여 시도했다

./TheApp.exe 
mono theApp.exe 
mono --debug theApp.exe 

:

I는 다음과 같은 명령 줄에서 응용 프로그램을 실행하는 다양한 방법을 시도했습니다. 이러한 모든 방법으로 인해 동일한 충돌이 발생합니다.

제 질문은 누군가가 MonoDevelop가 명령 줄에서 시작할 때 응용 프로그램을 시작할 때 다르게 수행하고 있다는 것을 알고 있습니까? 프로젝트 속성에서 아무 것도 찾을 수 없지만 어쩌면 확실하지 않은 것이 있습니다.

+0

프로그램을 얼마나 정확히 실행하고 있습니까? 당신의 쉘에서 사용하는 것과 다른 런타임을 사용하고있을 수도 있습니다 (나는 그 상황에 처해 있습니다) – IanNorton

답변

0

첫째로 * Assertion: should not be reached at mini-codegen.c:1402 뒤에 스택 트레이스가 있습니까?

그 오류 메시지와 함께 본 다른 문제는 일반적으로 스택 추적으로 이어집니다. IDE에서 실행 버튼의 MonoDevelop source code 클릭에서

SRC/코어/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs 호출합니다.

SRC/코어/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs 라인 (284)에서

IdeApp.Workbench.ActiveDocument.Run (executionHandler);.

이 라인 386

SRC/코어/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs에서 IdeApp.ProjectOperations.ExecuteFile (Window.ViewContent.ContentName, handler);를 호출합니다.

이 문제는이 문제는이 후 라인에 있는지 918

100 %를 entry.Execute (monitor, context, IdeApp.Workspace.ActiveConfiguration);를 호출 라인 899

ExecuteSolutionItemAsync (monitor, entry, context); 전화 1051

IAsyncOperation aop = Execute (tempProject, context);를 호출 라인 1044

return ExecuteFile (file, context);를 호출 포인트.

나는이 다음 호출 누구의 생성자 그런 SRC/코어/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs을에서 StartProcess 메소드를 호출

Command = command; 
Arguments = arguments; 
WorkingDirectory = workingDirectory; 
this.environmentVariables = environmentVariables; 

를 설정 관련 실행 명령을 호출 생각 .

명령, 명령 인수, 작업 디렉토리 및 enivronment 변수의 차이를 확인할 수 있으면 MonoDevelop와 동일한 구성으로 실행할 수 있습니다.

관련 문제