Soft broken. - ??
От: Sylph Россия  
Дата: 23.02.03 07:23
Оценка:
Вопрос: при отладке dll выдается такая бяка:

DBG: No threads available for break. Soft broken.

хотя при просто запуске это же место кода отрабатывает на ура. Так это чей софт брокен? dll-ки или приложения ее загружающего? Если первое, то это просто отлично (типа, можно что-то сделать), а если второе, то ... — я писал только библиотеку...

23.02.03 21:20: Перенесено модератором из 'C/C++' в Средства разработки — ХД
Re: Soft broken. - ??
От: Frostbitten Россия  
Дата: 23.02.03 12:14
Оценка:
Здравствуйте, Sylph, Вы писали:

S>Вопрос: при отладке dll выдается такая бяка:


S>DBG: No threads available for break. Soft broken.


S>хотя при просто запуске это же место кода отрабатывает на ура. Так это чей софт брокен? dll-ки или приложения ее загружающего? Если первое, то это просто отлично (типа, можно что-то сделать), а если второе, то ... — я писал только библиотеку...


WinXP + VS6? Так? По непонятным причинам старые дебугеры (VS6, Delphi 5) не способны подрубаться к процессам, неотлаживаемым ими изначально.

Soft broken — конечно, не означает, что разрушен чей-то софт, как ты наверное предположил (это бы звучало как soft is/was broken), это лишь означает, что дебугер не смог выполнить break в текущей точке выполнения треда (он их просто не нашел), и выполнил остановку (break) процесса в специальной точке kernel'а (0x77xxxxxx) (на экране отображается Disassembler и текущая операция — это ret, выполнение кот. приведет к продолжению выполнения программы).

Для того, чтобы все было как надо, либо используй новые дебагеры — VS7, напр., либо в своей либе установи в месте, где хочешь брекнуть:
::DebugBreak();

или

__asm int 3;


Либо, если dll'ка у тебя не local COM сервер, делай по-нормальному: в Setting'ах проекта укажи Executable for debug session на exe'шник.

Вышеизложенное вытекает из слепого, неподкрепленного теорией, опыта (скажем так, внепрофессиональной деятельности), так что и у меня возникает следующие вопросы:

1. Почему такое происходит (начиная с WinNT 5.1) и где написано, что так должно быть?
2. Каким свойством должен обладать дебагер, чтобы нормально брекать неотлаживаемые им процессы?
3. Можно ли заставить дебагер VS6 работать так, как он работал в WinNT 5 и ниже?
Re[2]: Soft broken. - ??
От: Аноним  
Дата: 25.02.03 12:38
Оценка:
F>WinXP + VS6? Так? По непонятным причинам старые дебугеры (VS6, Delphi 5) не способны подрубаться к процессам, неотлаживаемым ими изначально.

Да, именно так.


F>Для того, чтобы все было как надо, либо используй новые дебагеры — VS7, напр., либо в своей либе установи в месте, где хочешь брекнуть:

F>
F>::DebugBreak();

F>или

F>__asm int 3;
F>


F>Либо, если dll'ка у тебя не local COM сервер, делай по-нормальному: в Setting'ах проекта укажи Executable for debug session на exe'шник.


Дык, так и сделал. Честно говоря, как отладить dll по-другому я не знал. Только вот — периодически получаю такую фигню... Спасибо за совет — буду пробовать 7-ю студию.
Re: Soft broken. - ??
От: gok Россия  
Дата: 24.01.06 20:01
Оценка:
Здравствуйте, Sylph, Вы писали:

Я из-под семерки. Точно такое же сообщение получил при дебаге ехе. Сменил статику мфс на шаровую, поехало как по маслу!
gok
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.