Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
имеется функция Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. которая в отличие от Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. выдаёт исключение , т.е. исключение не перехватывается блоком catch(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 18:36 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
подскажите, пожалуйста, как такое обрабатывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 18:37 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659 выдаёт исключение , т.е. исключение не перехватывается блоком catch(...) Это не исключение, это ASSERT. Именно поэтому оно и не перехватывается -- если ты нажмёшь "пропустить", возможно, фукнция и сработает, как тебе надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 19:10 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
увы всё оказалось не так просто. функция variableToStr находится в dll, которая injectится в чужую программу. ошибка возникает независимо от того как собрана dll, с дебажной версией вылетает окно, с релизной - программа просто падает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 20:22 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659, random_account_11367934659функция variableToStr находится в dll Нет, она находится в хедере, потому что это шаблонная функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 00:08 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659подскажите, пожалуйста, как такое обрабатывать как такое отрабатывать чтобы ЧТО? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 01:11 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
MasterZivrandom_account_11367934659подскажите, пожалуйста, как такое обрабатывать как такое отрабатывать чтобы ЧТО? Помниться ты утверждал, что из ДЛЛ можно возвращать что угодно, а не только POD =) Вот теперь обоснуй на примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 01:32 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
MasterZivrandom_account_11367934659подскажите, пожалуйста, как такое обрабатывать как такое отрабатывать чтобы ЧТО? чтобы приложение не валилось. ещё раз: сделал dll в которой переопределяются стандартные winapi - шные вызовы (CreateFileA и т.п.) dll inject-иться в стороннее приложение, заменяя в нём соотв. функции на функции из dll. dll версии в отличие от оригинальных добавляют логирование в файл. На тестовом приложении всё работает чётко, на реальном - возникает сабжевая проблема. (видимо в функцию передаётся битый параметр) ошибка возникает при детерминорованной последовательности действий. - с дебажной версией dll вылетает assert-овое окно, если нажать "пропустить" программа вылетает (убивается drwtsn'ом) - с релизной версией dll - тот же результат, но без диалогового окна - с dll, у которой закомментирован участок кода, ошибки не возникает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 12:18 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Я же тебе намекнул - используй POD, Люк! https://ru.wikipedia.org/wiki/Простая_структура_данных Вероятно, у тебя зоопарк CRT в твоей DLL и вызывающей программы. А с Мастером мы еще пообсуждаем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 12:42 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
ЗимарглВероятно, у тебя зоопарк CRT в твоей DLL и вызывающей программы. Как вариант попробовать статическую сборку. Ключ /MT компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 12:49 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Dima TЗимарглВероятно, у тебя зоопарк CRT в твоей DLL и вызывающей программы. Как вариант попробовать статическую сборку. Ключ /MT компилятора. это я попробовал первым делом, увы не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:26 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
ЗимарглЯ же тебе намекнул - используй POD, Люк! https://ru.wikipedia.org/wiki/Простая_структура_данных определить функцию для разных типов - способ очевидный, но какой-то ненаучный:) ЗимарглВероятно, у тебя зоопарк CRT в твоей DLL и вызывающей программы. разумеется в вызывающей программе может быть любой зоопарк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:31 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
ЗимарглMasterZivпропущено... как такое отрабатывать чтобы ЧТО? Помниться ты утверждал, что из ДЛЛ можно возвращать что угодно, а не только POD =) Вот теперь обоснуй на примере. а при чем тут это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:43 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
ЗимарглЯ же тебе намекнул - используй POD, Люк! https://ru.wikipedia.org/wiki/Простая_структура_данных Вероятно, у тебя зоопарк CRT в твоей DLL и вызывающей программы. А с Мастером мы еще пообсуждаем) ну давай, у него там 0указатель, а ты про какие то POD заливаешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:46 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Dima TЗимарглВероятно, у тебя зоопарк CRT в твоей DLL и вызывающей программы. Как вариант попробовать статическую сборку. Ключ /MT компилятора. ребята, что вы тут гоните? у его dll, значит статическая сборка уже идет лесом.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:48 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659Dima Tпропущено... Как вариант попробовать статическую сборку. Ключ /MT компилятора. это я попробовал первым делом, увы не помогло дорогой коллега, сначала найди причину ассерта, и исправь программу, чтобы его не было. потом будешь что-то там собирать уже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:50 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659ЗимарглЯ же тебе намекнул - используй POD, Люк! https://ru.wikipedia.org/wiki/Простая_структура_данных определить функцию для разных типов - способ очевидный, но какой-то ненаучный:) Шаблоны использовать тебе никто не мешает. Главное не возвращай вызывающей программе объекты с "чужим" хипом MasterZivЗимарглпропущено... Помниться ты утверждал, что из ДЛЛ можно возвращать что угодно, а не только POD =) Вот теперь обоснуй на примере. а при чем тут это? Так это пример "как делать не надо" из этой области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:53 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
MasterZivDima Tпропущено... Как вариант попробовать статическую сборку. Ключ /MT компилятора. ребята, что вы тут гоните? у его dll, значит статическая сборка уже идет лесом.... Почему? Чем DLL от EXE отличается ? Затестил по тупому: создал новый DLL-проект, скомпилировал с /MD и /MT - размер 7 и 41 кб, т.е. ключик учитывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 13:56 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivпропущено... ребята, что вы тут гоните? у его dll, значит статическая сборка уже идет лесом.... Почему? Чем DLL от EXE отличается ? . Потому. Потому что. ODR . Dima TЗатестил по тупому: создал новый DLL-проект, скомпилировал с /MD и /MT - размер 7 и 41 кб, т.е. ключик учитывается. Все знают, что азотом дышать нельзя. Я затестил по-тупому. Купил воздушный шарик, и вдохнул. И ничего, живой... Давай так: хочешь об этом поговорить -- создай новый топик. А ещё можешь поискать -- дофига обсасывалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:23 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Зимарглrandom_account_11367934659пропущено... определить функцию для разных типов - способ очевидный, но какой-то ненаучный:) Шаблоны использовать тебе никто не мешает. Главное не возвращай вызывающей программе объекты с "чужим" хипом MasterZivпропущено... а при чем тут это? Так это пример "как делать не надо" из этой области. Почему не надо ? Я вижу вообще шаблонную функцию, которая возвращает std::string -- шаблонный же класс. Почему бы ей не вызываться из .DLL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:24 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659увы всё оказалось не так просто. функция variableToStr находится в dll, которая injectится в чужую программу. ошибка возникает независимо от того как собрана dll, с дебажной версией вылетает окно, с релизной - программа просто падает. А, вот этого я кстати не заметил (всё в метро...). Тогда, боюсь, что Зимаргл действительно прав. Ты не можешь накладывать на приложение, куда иньектится твоя DLL никакие ограничения. И ты вообще не можешь использовать ни STL, ни CRT. Только WinAPI. (ну т.е. на самом деле можешь, но аккуратно, но ты, видимо, аккуратно не умеешь...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:30 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
MasterZivrandom_account_11367934659пропущено... это я попробовал первым делом, увы не помогло дорогой коллега, сначала найди причину ассерта, и исправь программу, чтобы его не было. потом будешь что-то там собирать уже... ошибку я нашёл - скорее всего это access violation , её можно воспроизвести на простом тестовом приложении: собираю компилятором msvc2008 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. собственно, я думал, что она ловится c catch(...), но, видимо, я был не прав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:52 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Это ошибка доступа к несуществующей памяти. try...catch ее не ловит. Используй для проверки IsBadReadPtr() или SEH ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 15:10 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
random_account_11367934659, А что это за хрень ? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 15:14 |
|
||
|
как обработать исключение?
|
|||
|---|---|---|---|
|
#18+
Неплохая подборка анализа граблей для данного случая http://stackoverflow.com/questions/22797418/how-do-i-safely-pass-objects-especially-stl-objects-to-and-from-a-dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:48 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39093703&tid=2018769]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 266ms |

| 0 / 0 |
