![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
есть программа, написанная преимущественно на boost. использует asio, filesystem, interprocess, thread.
программа прекрасно работает. но при завершении программы, процесс остается висеть еще некоторое время. при запуске программы из командной строки, при завершении, терминал возвращает управление. ни о какой ошибке ничего не говорит. при запуске программы из дебагера(qtcreator), при завершении, дебагер висит, ожидает завершения. по прошествию какого-то времени, программа все же завершается с сообщением:
при попытке пройтись дебагером до точки возврата из main(), определил, что зависание процесса происходит в деструкторе какого-то класса. определить точнее не получается, дебагер виснит. какие есть в венде для этого инструменты? strace для вендаус не нашел. зы mingw-4.5.1, boost-1.43.0, gdb-7.1. Добавлено через 1 минуту и 43 секунды зызы в линукс все гуд. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нашел StraceNT. но в нем программа корректно не запускается.
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 8 Всего: 39 |
Трейс же сисколы перехватывает, толку с него? Нужно дебажить. В качестве развлекушки на полчаса могу присоветовать расставлять контрольные принтф-ы и по ним проследить за тем, кто тормозит.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
по аргументам и кодам возврата очень просто ошибки искать. уже 4 часа таким делом маюсь. заблудился. это не дело, слишком много деструкторов. |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
я бы юзал ollydbg но для нее нужен опыт.
вместо консольных консольных printf надежнее юзать kernel32.OutputDebugString и ловить их отладчиком, или утилитой DbgView Это сообщение отредактировал(а) Abyx - 25.8.2010, 23:13 |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
-------------------- вопросов больше чем ответов |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
В процессе висения (у выхода) нажми Ctrl-C и когда остановится посмотри стек вызовов. Тот, кто висит, будет где то сверху.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я использую QtCreator. комбинацию клавиш вы предложили для него? или для gdb? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
boostcoder, запусти под отладчиком, когда "зависнет", нажми на "паузу". А дальше по стеку вызовов определи где повисло.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ребята, ничего не получается. дебаггер либо висит мертво, либо прерывается, но никакого стэка вызовов нет.
Добавлено через 5 минут и 10 секунд попробую собрать с помощью msvc. говорят там дебаггер поудобнее. |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
boostcoder, попробуйте таки использовать OllyDbg 1.10.
Когда прога повиснет, нажмите паузу [||], затем [K] чтобы показать окно стека вызовов. Если там будет пусто, смотрите адреса возврата в стеке (справа внизу). Если есть .pbd файл, то под окном дизасма будут строки кода. Если .pdb файл не сделать, сделайте наиболее интересные функции экспортируемыми __attribute__((dllexport)) ![]() Вобщем-то можно обойтись и без знания асма. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Abyx, сейчас попробую..
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
при завершении, вот что вижу:
![]() в статусбаре текст! жму пайзу, К, и вижу это: ![]() но мне это ни о чем не говорит. увы. Добавлено через 54 секунды ы) почему-то скрины не масштабируются форумом. |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
да.. что-то сказать по скринам сложно
на 1м скрине видно что программа падает с AccessViolation при попытке чтения адреса 0x14 в стеке вызовов видно что это внутри функции с адресом 1090В30 можно попробовать ее найти. например сгенерив .map файл и поискав там последние 3-4 цифры адреса или загрузить бинарник в IDA, там скорей всего будут корректно отображаться симовлы еще можно поискать по сигнатуре, в окне дизасма показаны байты кода Добавлено через 12 минут и 30 секунд вообще это выглядит как попытка удалить класс по нулевому указателю
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |