考虑下面的C#程序:
using System; using System.Diagnostics; namespace Test { class MainClass { public static void Main (string[] args) { Debug.Assert(false); Debug.Fail("fail!"); Console.WriteLine ("Hello World!"); } } }
编译时使用:
dmcs -debug -d:DEBUG Main.cs
然后运行它:
mono --debug Main.exe
断言和失败似乎被忽略.输出只是:
Hello World!
我在StackOverflow上检查了其他相关问题,但是找不到解决方案.特别是Mono – Debug.Assert does not work中的解决方案不起作用. (更新:更新的解决方案可以正常工作,请看下面的评论.)
我在Ubuntu 11.10上使用Mono 2.10.5-1.
解决方法
单声道
http://ebsteblog.wordpress.com/2009/05/06/debugassert-and-mono/的C#
文章摘录:
…如果您为您的应用程序创建一个.config文件,并将assertuienabled属性设置为true,则可以获得与.NET相同的对话框.文件app.config:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.diagnostics> <assert assertuienabled="true" /> </system.diagnostics> </configuration>
旧答案:如果没有在命令行/编译选项上指定-define DEBUG,则C注释.
对于调试添加
#define DEBUG
在代码的开头
#define TRACE
为追踪.
见这里的解决方案:http://lists.ximian.com/pipermail/mono-list/2006-December/033774.html
p.s:我试过这个C不是C#.这可能不适用于C#.