Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как дебагить приложение (ехе), запущенное из другого (c#, vs10)  (Прочитано 6775 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 06-07-2012 14:19 » 

Исходная ситуация:
язык - c#, студия - vs10.
Есть приложение (dll), в котором надо в числе прочего запустить один ехе. Т.к. оба приложения мои, то код есть.

Запуск выглядит следующим образом:

Код:
      // create process
      System.Diagnostics.Process oldClient = new System.Diagnostics.Process();

      // set name (это полное имя с путем и расширением)
      oldClient.StartInfo.FileName = sNameClientExe;

      // StartInfo
      oldClient.StartInfo.UseShellExecute = false;
      oldClient.StartInfo.RedirectStandardOutput = true; // я потом хочу иметь все логи, написанные ехешником, в основном приложении
      oldClient.StartInfo.Arguments = sArguments;

      // start
      bool bRet = oldClient.Start();

проблема:
в ехе - шнике что-то падает (если его запустить самостоятельно, то все ок...),
посему надо его посетить дебагом.
Раньше я всегда в начале кода в ехешнике встраивала что-то типа:

Код:
      int nnn = 50;
      int mmm = 5 / nnn - 50;

чтобы программа начала орать благим матом по поводу ошибки. А тут я вся из себя спасительница - говорю: "конечно хочу посмотреть, в чем дело" и спокойно попадаю дебаггером внутрь.
Но все это было до 10-й студии... А в ней этот номер не проходит....

Я решила сделать по-другому: встроила там цикл с ожиданием

Код:
      for (int i = 0; i < 5; i++)
      {
        Console.WriteLine(Tools.Helpers.SetLogString("\n" + c_strFuncName, "before Sleep - OK"));
        System.Threading.Thread.Sleep(5000);
      }

чтобы успеть из студии сказать "attach to process".
Успеваю, но студия мне рассказывает, что кода для дебага нет...

ладно, решила пойти через taskManager - оттуда сказать, что хочу дебаггить процесс. В результате попытки прицепиться процесс убивается... Почему - не знаю (в этот момент там крутится System.Threading.Thread.Sleep(5000);
 дабы у меня было время на подключение к процессу до той точки, в которой все падает).

Вопрос: как еще можно прицепиться дебаггером к работающему ехе?
Я понимаю, что я - полный тормоз, но меня это не спасает... Попытка погуглить на эту тему ничего не дала (подозреваю, что как-то неудачно составила запрос)

забыла написать показываемое при попытке поставить брейкпоинт сообщение - классика жанра:
no symbols have been loaded for this document


malaja, 16:54:
так, ничего не понимаю...
сейчас взяла и тупо создала 2 проекта - оник как WinForms (чтобы удобней было), второй - как консольное приложение. внесла описанные вышей действия, стартовала - все работает! я прекрасно могу аттачить открытый проект к стартовавшему ехешнику! И никаких рассказов о том, что брейкпоинт не соответствует коду!
« Последнее редактирование: 06-07-2012 15:50 от Malaja » Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 06-07-2012 17:36 » 

Malaja, как-то оно у тебя было собрано без отладочной информации - вот и не хотел debugger цепляться...
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #2 : 06-07-2012 19:52 » new

Дим,
да там самая стандартная сборка... Никаких особых опций... Это в с++-ных проектах куча установок, а c#-ных, по сравнению с ними, все вроде бы очень просто и обозримо.

Где-то же должна быть причина этой ерунды...
rebuild я делала, а вот машину по новой не стартовала. Надо будет в понедельник посмотреть, чем это закончится...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines