Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > std::string


Автор: Kirgston 18.10.2010, 22:09
Всем доброго времени суток! Собственно интересует такой вот вопросик... как отлаживать стринги?

user posted image

Добавлено через 13 минут и 40 секунд
Имеется ввиду как я могу получить строку в которой происходит ошибка? Не ту что в файле xstring.h а реальную в моем коде

Автор: azesmcar 18.10.2010, 22:38
запусти программу под дебагером.

Автор: mes 18.10.2010, 22:42
название темы одно, на скрине ошибка другая, а спрашивает тс. о третьем 
 smile  smile 

Автор: Kirgston 19.10.2010, 07:59
Цитата(azesmcar @  18.10.2010,  22:38 Найти цитируемый пост)
запусти программу под дебагером.

Мне что около 4 000 строк построчно ?

Цитата(mes @  18.10.2010,  22:42 Найти цитируемый пост)
название темы одно, на скрине ошибка другая, а спрашивает тс. о третьем

Почему же? В названии написано "отлаживании" на скрине - "Debug Assertion Failed" и спрашиваю я как нормально отлаживать стринг... 

Повторю еще раз вопрос а то видимо меня никто не понял и просто начали надо мной издеватся :( : есть программа на ~ 4 000 строк кода. Программа падает не просто так, а при определенных условиях. И где не ясно. То есть у меня на Вин 7 нормально, ошибки случаются на Вин ХР. Где возможно у меня "косяк" я не знаю. Вот и спрашиваю как отлаживать стринги чтобы вместо косвенного адреса получать прямой(ибо ошибка предположено будет появилятся на сторонних ПК) 

Автор: EgorTheBlade 19.10.2010, 08:23
F10 и вперед до строки где падает.
Можно по подробнее зачем вам адрес?

Автор: azesmcar 19.10.2010, 08:28
Цитата(Kirgston @  19.10.2010,  07:59 Найти цитируемый пост)
Мне что около 4 000 строк построчно ?

Нет, достаточно просто запустить под дебагером и посмотреть где программа падает, а там дальше смотришь stack trace, находишь место вызова, ставишь breakpoint и вперед.

Автор: Kirgston 19.10.2010, 08:37
Цитата(EgorTheBlade @  19.10.2010,  08:23 Найти цитируемый пост)
F10 и вперед до строки где падает.


Цитата(Kirgston @  19.10.2010,  07:59 Найти цитируемый пост)
То есть у меня на Вин 7 нормально, ошибки случаются на Вин ХР


ех... ладно еще раз скажу. Программа падает в некоторых ситуациях на посторонних ПК. Прямой отладки там нету. Как и самой студии


Цитата(EgorTheBlade @  19.10.2010,  08:23 Найти цитируемый пост)
Можно по подробнее зачем вам адрес?

Я имел ввиду не прямой адрес , аля  : 0x163FA12 и т.д. а нечто вроде _LINE_ & _FILE_

Добавлено через 3 минуты и 4 секунды
Цитата(azesmcar @  19.10.2010,  08:28 Найти цитируемый пост)
Нет, достаточно просто запустить под дебагером и посмотреть где программа падает, а там дальше смотришь stack trace, находишь место вызова, ставишь breakpoint и вперед.

Не всегда "прокатывает". Лично у меня всего 10ть последних вызовов (может как то и можно увеличить, но к сож. не знаю как). А при 10ти есть варианты что скрытые вызовы (вызовы ядра) перекроют(ну их просто будет много) то место где был оригинальный вызов. Плюс ко всему ,как уже говорил, то ошибки могут случатся на посторонних ПК и иногда мне будет проблематично повторить действия пользователя... тем более что как правило пользователь не помнит последних своих действий

Автор: maxim1000 19.10.2010, 09:25
когда упала и выдалось сообщение, нужно открыть task manager, кликнуть правой кнопкой на упавшем процессе, выбрать Create Memory Dump (ну или что-то похожее)

будет создан DMP-файл, его нужно кинуть на комп разработчика в директорию, в которой лежат pdb-файлы, потом - открыть студией, можно будет посмотреть стек вызовов

Автор: Kirgston 19.10.2010, 09:44
Цитата(maxim1000 @  19.10.2010,  09:25 Найти цитируемый пост)
когда упала и выдалось сообщение, нужно открыть task manager, кликнуть правой кнопкой на упавшем процессе, выбрать Create Memory Dump (ну или что-то похожее)будет создан DMP-файл, его нужно кинуть на комп разработчика в директорию, в которой лежат pdb-файлы, потом - открыть студией, можно будет посмотреть стек вызовов


Спасибо большое! Попробую и отпишусь

Автор: djamshud 19.10.2010, 12:02
Скорее всего ошибка воспроизводится на обоих ПК, просто в одном случае это не приводит к аварийному завершению. Воспользуйтесь отладчиком памяти (в линупсе valgrind, для винды нагуглите аналог) и с его помощью проверьте корректность работы программы с памятью.

Если же ошибка происходит исключительно от магической комбанации действий пользователя, то нужно либо узнать эту комбинацию, либо, как уже предлагали, возиться с дампами, но это геморно.

Автор: Kirgston 10.11.2010, 11:49
Цитата(maxim1000 @  19.10.2010,  09:25 Найти цитируемый пост)
когда упала и выдалось сообщение, нужно открыть task manager, кликнуть правой кнопкой на упавшем процессе, выбрать Create Memory Dump (ну или что-то похожее)будет создан DMP-файл, его нужно кинуть на комп разработчика в директорию, в которой лежат pdb-файлы, потом - открыть студией, можно будет посмотреть стек вызовов

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

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