На том же примере. Брейкпоинт срабатывает независимо от контекста, в котором он ставился.
> Есть еще варианты? Один из вариантов: ты все таки неверно понял какая функция выдает бокс.
Второй: если прога твоя, поставь в начало int 3 (а если не твоя - то вероятность того, что ты неверно понимаешь какая именно функция выдает мессидж бокс очень высока)
Третий: не знаю как там сайс обрабатывает свои брыкпойнты, но может user32 в твоем контексте отображается по другому адресу и поэтому перенесена (copy-on-write) а точка прерывания остается на другой странице.
> Если нет, большая просьба написать. Тогда я не буду долго > ждать и поставлю win98. Эт ты зря :-) Но отговаривать не стану - каждый имеет право извращаться, если это не нарушает права других :-)
> Правда было это уже давно, но помню что на брэкпоинты > реагировал идеально. Я потестил токшо. Тоже идеальная реакция
> softice 4.5 >
Про такую версию - ничего не слышал.
У меня v4.05.526 очень устойчиво работает на Win2K.
Можно проверить следующее:
1) Какой сервис пак на Win2K?
(по моим наблюдениям, SoftICE надо ставить после всех сервис паков и апдейтов)
2) Какой "Startup Mode" у SoftICE?
(Boot, System, Automatic, Manual)
3) Что говорит "Symbol Loader"?
(если все нормально, то в правом нижнем углу он должен показывать "SoftICE is active")
4) Поставь bpx на что-нибудь еще - LoadLibraryA, GetModuleHandleA -
и запусти несколько копий Windows Explorer. Если не ловится, значит SoftICE неверно установился.
Про такую версию - ничего не слышал.10.02.04 15:00 Автор: ANONIM Статус: Незарегистрированный пользователь
> > softice 4.5 > > > Про такую версию - ничего не слышал. > У меня v4.05.526 очень устойчиво работает на Win2K. Виноват: SoftIce 4.0.5 build 334
> Можно проверить следующее: > 1) Какой сервис пак на Win2K? > (по моим наблюдениям, SoftICE надо ставить после всех > сервис паков и апдейтов) 3 сервис пак. Ставил сразу вместе с виндой. Т.е. софтайс ставился последним.
>
> 2) Какой "Startup Mode" у SoftICE? > (Boot, System, Automatic, Manual) Пробовал Boot, и System
> 3) Что говорит "Symbol Loader"? > (если все нормально, то в правом нижнем углу он должен > показывать "SoftICE is active") Ничего не говорит. А что у него спросить? чтобы он сказал.
> 4) Поставь bpx на что-нибудь еще - LoadLibraryA, > GetModuleHandleA - > и запусти несколько копий Windows Explorer. > Если не ловится, значит SoftICE неверно установился. Он вообще на брейкпоинты не реагирует.
Что значит неверно? А как верно?
Попробуй сделать Startup Mode = Automatic10.02.04 17:18 Автор: Neznaika <Alex> Статус: Member
> 3 сервис пак. Ставил сразу вместе с виндой. >
А система какая - Eng / Rus?
В любом случае, попробуй сделать Startup Mode = Automatic.
Тебе же не надо сразу - драйвера устройств отлаживать.
> > 3) Что говорит "Symbol Loader"? > Ничего не говорит. А что у него спросить? чтобы он сказал. > Просто запускаем
Start -> Programs -> NuMega SoftICE Driver Suite -> SoftICE -> Symbol Loader
и смотрим, что у него в правом нижнем углу.
> Он вообще на брейкпоинты не реагирует. > Что значит неверно? А как верно? >
Неверно - это как раз и значит, что на брейкпоинты не реагирует.
Если все нормально, то после bpx GetModuleHandleA -
окно SoftICE будет выскакивать по нескольку раз при запуске каждой программы.
Но сначала все-таки Subj
Поставь лучше SoftIce Driver Suite10.02.04 17:06 Автор: amirul <Serge> Статус: The Elderman
> > Про такую версию - ничего не слышал. > > У меня v4.05.526 очень устойчиво работает на Win2K. > Виноват: SoftIce 4.0.5 build 334 Все равно старовата. Не поставить бы тебе Driver Suite
> > 3) Что говорит "Symbol Loader"? > > (если все нормально, то в правом нижнем углу он должен > > показывать "SoftICE is active") > Ничего не говорит. А что у него спросить? чтобы он сказал. Внимательнее читай :-)
Но вообще-то, если у тебя получается зайти и поставить bp, то он-таки запущен :-)
> > 4) Поставь bpx на что-нибудь еще - LoadLibraryA, > > GetModuleHandleA - > > и запусти несколько копий Windows Explorer. > > Если не ловится, значит SoftICE неверно установился. > Он вообще на брейкпоинты не реагирует. > Что значит неверно? А как верно? А хрен знает, вот у 4.05 например были БОЛЬШИЕ проблемы с виндой XP. Даже патч специальный был, который заставлял работать. Мож с новыми SP-ками он тоже работать отказывается. Поставь сайс поновее. У меня SICE Driver Suite 2.6 (хотя я уже о 3.0 бета слышал)
А ты уверен, что используется именно ANSI-версия [upd]06.02.04 11:50 Автор: amirul <Serge> Статус: The Elderman Отредактировано 06.02.04 11:52 Количество правок: 1
> > soft ice не ловит breakpoint. > > bpx MessageBoxA Вполне возможно, что включен юникод, тогда MessageBoxW
-----------------
Фигня это ^^^^^^^^
На самом деле сайс делает глобальными только брыкпойнты с адресом >0x80000000
Все остальные срабатывают только в контексте того процесса, в котором ставились (контексты переключаются командой addr)
юникод не включен.
06.02.04 12:06 Автор: ANONIM Статус: Незарегистрированный пользователь
> Вполне возможно, что включен юникод, тогда MessageBoxW > ----------------- юникод не включен.
> На самом деле сайс делает глобальными только брыкпойнты с > адресом >0x80000000 > Все остальные срабатывают только в контексте того процесса, > в котором ставились (контексты переключаются командой addr) А в каком контексте я их ставлю, исходя из предыдущей моей месаги.
Если не в лом поподробнее.
Вот есть прога из одной строки
MessageBox (0, "text", "text", MB_OK);
Т.е. когда она запускается сразу же выскакивает MessageBox.
Как его отлавить. Прога то ведь пока не запущена процесс не создан.
Соответсвтенно (исходя из ваших слов) поставить брэкпоинт в контексте
этого процесса я не могу.
В данном случае все решается довольно просто06.02.04 14:00 Автор: amirul <Serge> Статус: The Elderman
> Если не в лом поподробнее. > Вот есть прога из одной строки В своей проге можно вставить
#ifndef NDEBUG
__asm int 3
#endif
А в сайсе сделать i3here
> MessageBox (0, "text", "text", MB_OK); > Т.е. когда она запускается сразу же выскакивает MessageBox. > Как его отлавить. Прога то ведь пока не запущена процесс не > создан. > Соответсвтенно (исходя из ваших слов) поставить брэкпоинт в > контексте > этого процесса я не могу. Если ты поставишь брейкпойнт в этом процессе при первом запуске, то при втором запуске - она сработает. Насколько я понимаю, брейкпоинты связываются не идентификатором контекста, а с именем запущенного модуля. То бишь:
запускаете приложение
Ctrl+D
addr <название_или_адрес_процесса>
bpx MessageBoxA
F5
перезапускате приложение
Вроде должно работать
До сих пор не работает.
07.02.04 00:13 Автор: ANONIM Статус: Незарегистрированный пользователь
До сих пор не работает.
Прога называется test.exe, со строкой описанной раньше.
Запускаю test.exe
Вываливается MessageBox.
Не жму "ок", нажимаю ctrl+D.
набираю addr и enter.
выводит список процессов где в конце test
пишу addr test
F5
Нажимаю ok в MessageBox'е.
Запускаю test.exe
Нифига.
Есть еще варианты?
Если нет, большая просьба написать. Тогда я не буду долго ждать и поставлю win98.
Правда было это уже давно, но помню что на брэкпоинты реагировал идеально.
Только что попробовал08.02.04 18:18 Автор: amirul <Serge> Статус: The Elderman
На том же примере. Брейкпоинт срабатывает независимо от контекста, в котором он ставился.
> Есть еще варианты? Один из вариантов: ты все таки неверно понял какая функция выдает бокс.
Второй: если прога твоя, поставь в начало int 3 (а если не твоя - то вероятность того, что ты неверно понимаешь какая именно функция выдает мессидж бокс очень высока)
Третий: не знаю как там сайс обрабатывает свои брыкпойнты, но может user32 в твоем контексте отображается по другому адресу и поэтому перенесена (copy-on-write) а точка прерывания остается на другой странице.
> Если нет, большая просьба написать. Тогда я не буду долго > ждать и поставлю win98. Эт ты зря :-) Но отговаривать не стану - каждый имеет право извращаться, если это не нарушает права других :-)
> Правда было это уже давно, но помню что на брэкпоинты > реагировал идеально. Я потестил токшо. Тоже идеальная реакция
Если у тебя так работает, значит дело в каких-то...08.02.04 23:56 Автор: ANONIM Статус: Незарегистрированный пользователь
> На том же примере. Брейкпоинт срабатывает независимо от > контекста, в котором он ставился. Если у тебя так работает, значит дело в каких-то настройках.
> > Есть еще варианты? > Один из вариантов: ты все таки неверно понял какая функция > выдает бокс. > Второй: если прога твоя, поставь в начало int 3 (а если не > твоя - то вероятность того, что ты неверно понимаешь какая > именно функция выдает мессидж бокс очень высока) > Третий: не знаю как там сайс обрабатывает свои брыкпойнты, > но может user32 в твоем контексте отображается по другому > адресу и поэтому перенесена (copy-on-write) а точка > прерывания остается на другой странице. Думаю что все это не совсем подходит. (Прога моя, но как я говорил она состоит из одной строчки, и сделал я ее исключительно для теста).
Если у него (софтайса) с простым mressagebox'ом проблемы то что же будет,
когда я буду отлаживать серьезную прогу.
Amirul & Neznaika Большое спасибо за участие к моей проблеме.
Automatic - и он откликнулся! ! ! ! ! !
Не зря таки тема в beginner'сах.
Но как говорит шеф: Куй железо не отходя от кассы.
Вообщем когда ловишь брейкпоинт, то он показывает какой-то не тот адрес,
потому что в hiew(Hex редактор), это смещение вообще выходит за границы
файла. Куда глядеть чтобы вычислить смещение относительно начала файла.
Дык MessageBoxA находится в user32.dll11.02.04 00:09 Автор: amirul <Serge> Статус: The Elderman
> Automatic - и он откликнулся! ! ! ! ! ! Не знал о таком методе лечения. У меня он по жизни в manual стоит.
> Вообщем когда ловишь брейкпоинт, то он показывает какой-то > не тот адрес, > потому что в hiew(Hex редактор), это смещение вообще > выходит за границы Дык правильно. Сама то функция находится в другом модуле.
> файла. Куда глядеть чтобы вычислить смещение относительно > начала файла. Смотри в user32.dll, чаще всего она вписывается именно в тот базовый адрес, под который компилировался. То бишь, адрес, который покажет hiew для messageboxa должен быть таковым и в адресном пространстве процесса.