2010-05-02 4 views
6

Я отлаживаю проект, а Visual Studio останавливает отладку и закрывает программу в следующей строке без каких-либо исключений или сообщений об ошибках (я включил уведомления о любых заброшенных исключениях в опциях):Visual Studio останавливает отладку без ошибок, неожиданно

var query = Session.Linq<RSS>() 
      .Where(x => x.LastRetrieved <= date || x.LastRetrieved == null) 
      .Where(x => x.Moderated); 

Где Session.Linq ссылается на LINQ2NHibernate. Во всяком случае, вопрос в том, каковы возможные причины такого поведения? Протестировано как на VS 2010, так и в 2008 году - они ведут себя одинаково, просто отпадая от отладки.

Обновление. Если я изменяю тип приложения на «Консольное приложение», он ведет себя нормально. Очень странно.

+0

Вы пытались включить первые исключения? (CTRL-ALT-E из памяти ...) –

+0

Да, я включил их все. –

+2

Посмотрите на окно вывода (Ctrl + Alt + O). Каковы последние несколько строк, которые вы видите перед завершением сеанса отладки? Говорит ли он 'Программа '[1140] MyApp.vshost.exe: Managed' вышел с кодом 0 (0x0) .'? –

ответ

3

У меня была аналогичная проблема, и хотя это может быть не решение для вашего дела выше, я надеюсь, что это поможет кому-то другому.

Я должен был ссылаться на класс, который был написан кем-то еще, что выглядело так:

public class ItemPrice 
    { 
     public bool sucessIndicator 
     { 
      get { return sucessIndicator; } 
      set { sucessIndicator = value; } 
     } 

     public string productCode 
     { 
      get { return productCode; } 
      set { productCode = value; } 
     } 

     public string description 
     { 
      get { return description; } 
      set { description = value; } 
     } 

     public double price 
     { 
      get { return price; } 
      set { price = value; } 
     } 
    } 

На первый взгляд это выглядит нормально право ... пока вы не заметите, что каждое свойство ссылается само себя и не частный член.

Итак:

public string description 
     { 
      get { return description; } 
      set { description = value; } 
     } 

ссылается это сам рекурсивно вызывает исключение переполнения стека, который не получил показанный мне в VS, хотя у меня были все исключения включены. Это просто прекратило отладку без предупреждения.

Решения, конечно, изменить его больше, как это:

public string description 
     { 
      get; 
      set; 
     } 

Надеется, что кто-то помогает.

+0

, но есть ли способ прервать stackoverflow перед тем, как он сработает VS Debugger? – drzaus

Смежные вопросы