Debug.Assert, кажется, не работает в Mono - PullRequest
10 голосов
/ 23 ноября 2011

Рассмотрим следующую программу на 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

и последующем запуске:неудача, кажется, игнорируется.Вывод просто:

Hello World!

Я проверил другие связанные вопросы по StackOverflow, но не смог найти решение.В частности решение дать в Mono - Debug.Assert не работает не работает.(ОБНОВЛЕНИЕ: обновленное решение работает, см. Комментарии ниже.)

Я использую Mono 2.10.5-1 в Ubuntu 11.10.

Ответы [ 2 ]

8 голосов
/ 23 ноября 2011

C # на моно - http://ebsteblog.wordpress.com/2009/05/06/debugassert-and-mono/

Выдержка из статьи:

... если вы создаете файл .config для своего приложения и устанавливаете для атрибута assertuienabled значение true, вы получаете тот же диалог, что и для .NET ... Файл app.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.diagnostics>
        <assert assertuienabled="true" />
    </system.diagnostics>
</configuration>

Старый ответ: комментарий C ++, если вы не указали -define DEBUG в параметрах командной строки / компиляции.

Для отладки добавьте

#define DEBUG

в начале кода или

#define TRACE

для трассировки.

Смотрите решение здесь: http://lists.ximian.com/pipermail/mono-list/2006-December/033774.html

p.s: я пробовал это на C ++, а не на C #. Это может не работать для C #.

1 голос
/ 24 ноября 2011

Вы можете использовать конфигурацию xml или поместить ее под контроль своей программы, добавив прослушиватель трассировки во время выполнения:

var tl = new System.Diagnostics.ConsoleTraceListener();
System.Diagnostics.Debug.Listeners.Add ( tl );

Это дает вам дополнительное преимущество, так как вы можете включить егопосле запуска программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...