Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Какие есть debugger'ы


Автор: Zorro 23.8.2006, 14:36
Кто какие дебаггеры для .NET приложений знает? Конечно исключая Visual Studio. Хочется собрать коллекцию для решения одной проблемы.

 smile 

Автор: Able 23.8.2006, 16:21
Да и я за !
И что это за приблуда VisualDebagger?   smile 

Автор: mr.DUDA 24.8.2006, 08:58
Visual Debugger (также известный как Microsoft CLR Debugger) - бесплатная тулза, которая идёт вместе со студией либо вместе с Framework SDK, и представляет собой "обрезанный" вариант студии, в котором кроме самого дебаггера ничего и нету. Можно запускать его отдельно от приложения и аттачиться к процессу Ctrl + Alt + P, или же выбирая Debug -> Program To Debug и затем F5. Отладка идёт полностью аналогично студии.

Автор: Zorro 24.8.2006, 10:40
А .NET дебаггеров сторонних (не Microsoft) производителей никто не встречал?

Автор: Able 24.8.2006, 11:38
mr.DUDA, спасибо, да VisualDebagger "мало" чем от самой студии отличается )))  smile 
В одном из топиков по играм и графике arilou писал:
Цитата

Есть такая вещь, называется Debugger Visualizer. Это когда наводишь на переменную в отладке, а оно тебе показывает лупу маленькую. Кликаешь ее  и запускается кастомный визуализатор. Пример можешь посмотреть на датасете.

Что это ?

Автор: mr.DUDA 24.8.2006, 11:49
Цитата(Able @  24.8.2006,  11:38 Найти цитируемый пост)
Что это ?

Специальный класс, ответственный за отображение данных определённого типа во время отладки. Visualizer открывается по нажатию на маленький значок в виде лупы, слева от значения. В студии есть визуалайзеры для строк (открывается resizable форма, удобно для многострочного и длинного текста), датасетов (глючный кстати), и м.б. какие-то другие ещё. Можно написать свой собственный визуалайзер.

Автор: Naum 24.8.2006, 11:54
Цитата(mr.DUDA @  24.8.2006,  11:49 Найти цитируемый пост)
Можно написать свой собственный визуалайзер. 


Это как?

Автор: mr.DUDA 24.8.2006, 12:24
Add New Item... / Debugger Visualizer

В методе Show показываем форму, на которой выводим св-ва объекта в любом виде, а вообще в шаблоне дофига комментариев - можно разобраться:
Код
    // TODO: Add the following to SomeType's definition to see this visualizer when debugging instances of SomeType:
    // 
    //  [DebuggerVisualizer(typeof(Visualizer1))]
    //  [Serializable]
    //  public class SomeType
    //  {
    //   ...
    //  }
    // 
    /// <summary>
    /// A Visualizer for SomeType.  
    /// </summary>
    public class Visualizer1 : DialogDebuggerVisualizer
    {
        protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            // TODO: Get the object to display a visualizer for.
            //       Cast the result of objectProvider.GetObject() 
            //       to the type of the object being visualized.
            object data = (object)objectProvider.GetObject();

            // TODO: Display your view of the object.
            //       Replace displayForm with your own custom Form or Control.
            using (Form displayForm = new Form())
            {
                displayForm.Text = data.ToString();
                windowService.ShowDialog(displayForm);
            }
        }

        // TODO: Add the following to your testing code to test the visualizer:
        // 
        //    Visualizer1.TestShowVisualizer(new SomeType());
        // 
        /// <summary>
        /// Tests the visualizer by hosting it outside of the debugger.
        /// </summary>
        /// <param name="objectToVisualize">The object to display in the visualizer.</param>
        public static void TestShowVisualizer(object objectToVisualize)
        {
            VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(Visualizer1));
            visualizerHost.ShowVisualizer();
        }
    }

Автор: arilou 25.8.2006, 11:21
Цитата(mr.DUDA @  24.8.2006,  12:24 Найти цитируемый пост)
object data = (object)objectProvider.GetObject();

Прикольный код  smile WTF!?

Автор: mr.DUDA 25.8.2006, 15:31
Цитата(arilou @  25.8.2006,  11:21 Найти цитируемый пост)
Прикольный код   WTF!?

Там сверху был намёк " Cast the result of objectProvider.GetObject() to the type of the object being visualized."  smile 

Автор: Able 25.8.2006, 17:11
Нету маленького значка ввиде лупы при отладке  smile 

Автор: mr.DUDA 25.8.2006, 18:23
Цитата(Able @  25.8.2006,  17:11 Найти цитируемый пост)
Нету маленького значка ввиде лупы при отладке

А атрибут [DebuggerVisualizer] над классом, который визуализируете, поставили ?

Автор: Able 25.8.2006, 22:31
Это с каждым классом такую процедуру проводить придется? (ставить референс)

Автор: mr.DUDA 26.8.2006, 14:53
Цитата(Able @  25.8.2006,  22:31 Найти цитируемый пост)
Это с каждым классом такую процедуру проводить придется? (ставить референс)

Можно юзать вариант атрибута, принимающий строковое имя типа визуалайзера, тогда референс на DLL с ним никуда добавлять не нужно.

З.Ы. и ещё, в мсдн сказано по поводу:
Цитата
To Install a Visualizer

1. Locate the DLL that contains the visualizer you have built.
2. Copy the DLL to either of the following locations:

Install path\Microsoft Visual Studio 8\Common7\Packages\Debugger\Visualizers
—or—
My Documents\Visual Studio 2005\Visualizers

3. Restart the Visual Studio debug session.

Автор: Able 27.8.2006, 12:54
Отлично, благодарствую mr.DUDA!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)