непонятная бага |
Здравствуйте, гость ( Вход | Регистрация )
непонятная бага |
Litkevich Yuriy |
23.2.2011, 8:53
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Имеется такой код (Qt 4.7.1):
Вывод в консоль совершенно не понятен: почему после вызова функции getFirstComponentItem в отладку не идут константные строки, и почему после этой функции s1 стала пустой.П.С. после вызова getFirstComponentItem во всей программе перестают печататься в поток ошибок строковые константы, хоть через qDebug, хоть через stderr. П.П.С. креатор по прежнему не помощник, не показывает QString как строку, только все его внутренности. П.П.П.С. getFirstComponentItem - функция из DLL-ки |
|
|
SABROG |
23.2.2011, 9:17
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Если функцию из dll не вызывать, то все нормально?
|
|
|
Rocky |
23.2.2011, 11:40
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
П.П.С. креатор по прежнему не помощник, не показывает QString как строку, только все его внутренности. Странно. Это разве нормально? У меня он обычно все показывает, даже массивы разворачивает. А если через QMessageBox выводить строки, то они тоже пустые? А можешь привести код getFirstComponentItem? Может она что-то со стеком делает или еще с чем-то таким... |
|
|
Litkevich Yuriy |
23.2.2011, 13:04
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Если функцию из dll не вызывать, то все нормально? даА можешь привести код getFirstComponentItem? нет кода, только dll-ка и заголовочник.Может она что-то со стеком делает разве ОСь на это не должна реагировать? Всё-таки строковые литералы - область "только для чтения"
|
|
|
Rocky |
23.2.2011, 13:24
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Хм... даже не знаю... Функция getFirstComponentItem генерирует какие-нить исключения? Может ее обернуть в try/catch? Или вообще попробовать из отдельного потока вызывать?
Цитата разве ОСь на это не должна реагировать? Всё-таки строковые литералы - область "только для чтения" Х его з. Пару лет назад, когда я подробно в этом всем разбирался смог бы ответить.. Сейчас уже не знаю. Насколько я помню, ОС должна реагировать (имею ввиду SIGTERM и пр) если затираются какие-то системные блоки памяти. Т.е. если выделить память под массив на 10 элементов, а потом обратиться к 11-му (случайно), то далеко не факт что прога выдаст assertion. Последствия теоретически могут быть такими, какие ты пишешь. А т.к. кода этой dll нет, то хрен его знает что там происходит, что слетает... Строки или вообще потоки вывода.... А если например так написать:
то что 2-й qDebug выведет? |
|
|
Litkevich Yuriy |
23.2.2011, 15:42
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
то что 2-й qDebug выведет? сейчас уже не хочется экспериментировать, код сильно переписал, от данной функции пока избавился.Функция getFirstComponentItem генерирует какие-нить исключения? нет, мало того она статус "Ок" возвращает.П.С, Хотя "Ок" - нуль в связи со всем этим делом, может кто-то знает как МинГВ осуществляет компиляцию? Т.е. строковые литералы где-то в одном месте лежат? что-то типа таблицы? |
|
|
Текстовая версия | Сейчас: 29.11.2024, 15:37 |