моно отладочная информация с исключениями в debian?

Я думал, что apt-get install mono-dbg решит эту проблему, но я ошибался. Как получить отладочную информацию с моно? Я использую Debian Squeeze, но не могу понять это на Debian Lenny или Etch.

Ниже я написал фиктивную программу и надеялся на номер строки, но вместо этого получил это. Это копирование/вставка из консоли/терминала.

Unhandled Exception: System.Exception: nooo blah
  at ExceptionTest.Program.func (Int32 a) [0x00000] in <filename unknown>:0
  at ExceptionTest.Program.func (Int32 a) [0x00000] in <filename unknown>:0
  at ExceptionTest.Program.func (Int32 a) [0x00000] in <filename unknown>:0
  at ExceptionTest.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExceptionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            func(3);
        }
        static void func(int a)
        {
            if (a == 18)
                throw new Exception("nooo blah");
            func(a + a + 2);
        }
    }
}

person Community    schedule 15.03.2011    source источник


Ответы (1)


Чтобы получить имена файлов и номера строк, скомпилируйте приложение с помощью -debug (например, gmcs -debug prog.cs), а затем запустите mono --debug prog.exe. .

Пакет mono-dbg предоставляет отладочные символы для /usr/bin/mono (и libmono).

$ gmcs -debug prog.cs
$ mono --debug prog.exe

Unhandled Exception: System.Exception: nooo blah
  at ExceptionTest.Program.func (Int32 a) [0x0001d] in /tmp/prog.cs:19 
  at ExceptionTest.Program.func (Int32 a) [0x00013] in /tmp/prog.cs:18 
  at ExceptionTest.Program.func (Int32 a) [0x00013] in /tmp/prog.cs:18 
  at ExceptionTest.Program.Main (System.String[] args) [0x00000] in /tmp/prog.cs:12 
person Gonzalo    schedule 16.03.2011
comment
Это сработало. +1 и принято. Сначала я подумал, что это должно быть потому, что я скомпилировал его с помощью Visual Studio. Но потом я понял, что у меня такая же проблема с другим приложением, которое БЫЛО скомпилировано с моно. Но это другой дистрибутив с другими библиотеками и с использованием IDE. Так что я не знаю, что там происходит. Отлично, теперь я могу работать над этой проблемой должным образом - person ; 16.03.2011
comment
К сожалению, это не сработало для меня. Я также пытался преобразовать файлы VS pdb в mdb, но по-прежнему не получаю информации о строке. Любые идеи? - person sunside; 13.04.2011
comment
Гонсало, я думаю, вы немного ошибаетесь насчет mono-dbg: mono-dbg действительно предоставляет символы отладки библиотек классов; отладочные символы для среды выполнения mono (/usr/bin/mono) находятся в пакете mono-runtime-dbg, а символы отладки для mono JIT находятся в libmono-2.0-1-dbg, согласно packages.ubuntu.com/precise/debug , верно? - person knocte; 24.08.2012
comment
Маркус, как ты конвертируешь файлы pdb в mdb? Почему бы просто не скомпилировать решение с помощью xbuild или в MonoDevelop, чтобы получить файлы mdb? - person knocte; 24.08.2012