c# - Mono 应用程序在调试器外崩溃

标签 c# ubuntu mono monodevelop

我正在开发一个在 Ubuntu 上运行的 C# 4.0 Mono 应用程序。

当从 MonoDevelop 运行时,应用程序在调试和 Release模式下运行良好。

但是,如果我构建应用程序(在调试和 Release模式下)然后从命令行启动它,应用程序会崩溃并出现以下错误:

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

如果我构建应用程序,然后通过从 Mono Develop 中选择“运行”->“调试应用程序”手动运行它,它也可以正常运行。

我尝试了多种从命令行启动应用程序的方法,包括:

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

我还尝试使用一个 shell 脚本,该脚本首先按照建议设置 DYLD_LIBRARY_PATHLD_LIBRARY_PATH 变量 here .所有这些方法都会导致相同的崩溃。

所以我的问题是,有谁知道 MonoDevelop 在启动应用程序时所做的不同,而我在从命令行启动它时却没有做?我在项目属性中找不到任何东西,但也许我遗漏了一些明显的东西。

最佳答案

首先是 * Assertion: should not be reached at mini-codegen.c:1402 之后有堆栈跟踪吗?

我在该错误消息中看到的其他问题通常后跟堆栈跟踪。

来自 MonoDevelop source code单击 IDE 调用中的“运行”按钮

src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs

IdeApp.Workbench.ActiveDocument.Run (executionHandler); 来自第 284 行

src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs

这从第 386 行调用 IdeApp.ProjectOperations.ExecuteFile (Window.ViewContent.ContentName, handler);

src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs

这会在第 1044 行调用 return ExecuteFile (file, context);

这会在第 1051 行调用 IAsyncOperation aop = Execute (tempProject, context);

这会在第 899 行调用 ExecuteSolutionItemAsync(监视器、入口、上下文);

这会调用 entry.Execute (monitor, context, IdeApp.Workspace.ActiveConfiguration); 第 918 行

在此之后不能 100% 确定。

我相信这个调用然后调用其构造函数设置的相关执行命令

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

然后调用 src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs 中的 StartProcess 方法。

如果您能识别命令、命令参数、工作目录和环境变量之间的区别,那么您肯定能够使用与 MonoDevelop 相同的配置运行它。

关于c# - Mono 应用程序在调试器外崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605410/

相关文章:

C#编码转换

c# - 需要在不锁定原始图像的情况下克隆位图图像

c# - 日期时间转换为无效格式

shell - 有没有办法在 linux 的 conf 文件中将文本添加到字符串的末尾?

c# - 根据 ASP .NET 中的某个时间表做某事

c# - 在哪里可以下载 Resharper 的命名标准/编码标准?

linux - 是否可以通过 txt 或 CSV 文件自动向终端输入命令,而不是手动写出来?

django - 域名 url 重定向到 apache2 中的 localhost

c# - "bool"作为对象 vs "string"作为对象测试相等性

asp.net - Mono 是 ASP.NET 的可行替代品吗?