Отладочный режим STLport - не могу включить :(
От: Basil2 Россия https://starostin.msk.ru
Дата: 20.01.05 13:33
Оценка:
Имею VC .Net и STLport 5.0.
Выставляю _STLP_DEBUG в файле stl_user_config.h и при вызове компилятора: /D "_STLP_DEBUG".
Линкую с stlport_vc70_stldebug_static.lib.

Однако, штатный пример
------------
char string[23] = "A string to be copied.";
char result[23];
std::copy(string+20, string+10, result);
------------
выдает
"This application has requested the Runtime to terminate it in an unusual way."
вместо положенной отладочной информации.

Вопрос — как сделать так, чтобы отладочный режим работал?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re: Отладочный режим STLport - не могу включить :(
От: _grisha  
Дата: 20.01.05 16:57
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Имею VC .Net и STLport 5.0.

B>Выставляю _STLP_DEBUG в файле stl_user_config.h и при вызове компилятора: /D "_STLP_DEBUG".
B>Линкую с stlport_vc70_stldebug_static.lib.

В stl_user_config.h ничего прописывать не надо — достаточно /D "_STLP_DEBUG"

B>Однако, штатный пример

B>------------
B>char string[23] = "A string to be copied.";
B>char result[23];
B>std::copy(string+20, string+10, result);
B>------------
B>выдает
B>"This application has requested the Runtime to terminate it in an unusual way."
B>вместо положенной отладочной информации.

А в Output посмотреть? У меня например вот такое есть:
e:\_media\proj\libs\stlport\stlport\stl\debug\_debug.c(78): STL error: Range [first,last) is invalid
e:\_media\proj\libs\stlport\stlport\stl\_algobase.h(247): STL assertion failure : __check_range(__first, __last)

так что все работает.
Re[2]: Отладочный режим STLport - не могу включить :(
От: Basil2 Россия https://starostin.msk.ru
Дата: 21.01.05 08:06
Оценка:
B>>Однако, штатный пример выдает
B>>"This application has requested the Runtime to terminate it in an unusual way."
B>>вместо положенной отладочной информации.

_>А в Output посмотреть?

Так я в него и смотрю — у меня КОНСОЛЬНОЕ приложение, фраза выше скопирована из вывода консоли, где я запускал свою программу.

_>У меня например вот такое есть:

_>e:\_media\proj\libs\stlport\stlport\stl\debug\_debug.c(78): STL error: Range [first,last) is invalid
_>e:\_media\proj\libs\stlport\stlport\stl\_algobase.h(247): STL assertion failure : __check_range(__first, __last)
_>так что все работает.

Я уверен, что у большинства работает; вопрос в том, почему может не работать у меня?!
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: Отладочный режим STLport - не могу включить :(
От: _grisha  
Дата: 21.01.05 08:18
Оценка:
Здравствуйте, Basil2, Вы писали:

_>>А в Output посмотреть?

B>Так я в него и смотрю — у меня КОНСОЛЬНОЕ приложение, фраза выше скопирована из вывода консоли, где я запускал свою программу.

Я имел ввиду не окно консоли, а окно Output(Debug) в VC7 — меню View->Other Windows->Output. Вот там оно и выводит эти ошибки. В консоль при этом ничего не выводится — я что-то помню что когда-то видел, что оно еще и в консоль выводило ошибки, но это давно было — наверное поменяли на какой-то версии.
Re[4]: Отладочный режим STLport - не могу включить :(
От: Basil2 Россия https://starostin.msk.ru
Дата: 21.01.05 08:55
Оценка:
Здравствуйте, _grisha, Вы писали:

_>>>А в Output посмотреть?

B>>Так я в него и смотрю — у меня КОНСОЛЬНОЕ приложение, фраза выше скопирована из вывода консоли, где я запускал свою программу.

_>Я имел ввиду не окно консоли, а окно Output(Debug) в VC7 — меню View->Other Windows->Output. Вот там оно и выводит эти ошибки. В консоль при этом ничего не выводится — я что-то помню что когда-то видел, что оно еще и в консоль выводило ошибки, но это давно было — наверное поменяли на какой-то версии.


Я так понимаю, что в случае консоли все сообщения выводятся в stderr, так что я должен их видеть.

Скажи пожалуйста, с какими настройками ты компилируешь программу?
(в среде есть опция типа "посмотреть, какие были бы ключи компиляции если делать проект в консоли)
Особенно интересуют ключи /MT, /MD, /MTd и пр.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[5]: Отладочный режим STLport - не могу включить :(
От: _grisha  
Дата: 21.01.05 09:40
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Скажи пожалуйста, с какими настройками ты компилируешь программу?

B>(в среде есть опция типа "посмотреть, какие были бы ключи компиляции если делать проект в консоли)
B>Особенно интересуют ключи /MT, /MD, /MTd и пр.

command line для _STLP_DEBUG-версии:
/Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_STLP_USE_AUTO_LINK" /D "_STLP_DEBUG" /D "_MBCS" /Gm /EHsc /RTC1 /MDd /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /nologo /c /ZI /TP

т.е. используется Multithreaded Debug DLL. STLport 5.0 — брал из cvs где-то в конце ноября — вряд ли с тех пор что-то поменяли в отношении debug-режима.

IMHO особой пользы от вывода ошибок в консоль нет — в случае ошибки идет assert-breakpoint — по стеку сразу видно, что ошибка идет от stlport-а — и посмотрев в Output можно собственно само сообщение об ошибке увидеть. Все довольно удобно.
Re[6]: Отладочный режим STLport - не могу включить :(
От: Basil2 Россия https://starostin.msk.ru
Дата: 24.01.05 12:33
Оценка:
Здравствуйте, _grisha, Вы писали:

_>т.е. используется Multithreaded Debug DLL. STLport 5.0 — брал из cvs где-то в конце ноября — вряд ли с тех пор что-то поменяли в отношении debug-режима.

Спасибо за советы, все решилось. Я расковырял как STLport выводит ошибки — действительно, он использует DebugOutputString(), т.е. все сообщения идут напрямую в дебагер, но не в консоль. Я заменил процедуру вывода на свою (с помощью _STLP_DEBEG_MESSAGE — молодцы ребята, сделали такую возможность), теперь все идет в консоль. Признаю, был неправ; еще раз спасибо.

_>IMHO особой пользы от вывода ошибок в консоль нет — в случае ошибки идет assert-breakpoint — по стеку сразу видно, что ошибка идет от stlport-а — и посмотрев в Output можно собственно само сообщение об ошибке увидеть. Все довольно удобно.

Удобно, но обычно я работаю в консоли в текстовом режиме, так что...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.