Ответ 1
Try:
bu 0xff3c6100
Если я правильно помню, WinDbg позволяет также установить точки останова по адресу.
У меня есть две перегрузки функции С++, и я хотел бы установить контрольную точку на одном из них:
0:000> bu myexe!displayerror
Matched: 00000000`ff3c6100 myexe!displayError (int, HRESULT, wchar_t *)
Matched: 00000000`ff3c60d0 myexe!displayError (int, HRESULT)
Ambiguous symbol error at 'myexe!displayerror'
Черт, мне было бы неплохо установить точки останова при всех перегрузках, но не могу понять, как:
0:000> bu myexe!displayerror*
Matched: 00000000`ff3c6100 myexe!displayError (int, HRESULT, wchar_t *)
Matched: 00000000`ff3c60d0 myexe!displayError (int, HRESULT)
Ambiguous symbol error at 'myexe!displayerror*'
Try:
bu 0xff3c6100
Если я правильно помню, WinDbg позволяет также установить точки останова по адресу.
Вы пробовали "bm myexe! displayerror"?
bp @@(MyClass:: MyMethod) break on methods (полезно, если один и тот же метод перегружен и, следовательно, присутствует на нескольких адресах)
bm myexe!displayerror
Это установит точки останова всех всех перегрузок, чем вы используете bc
, чтобы очистить те, которые вы не хотите.
bc 1-3
Или просто отключите их
bd 1-3
Проблема с bm
заключается в том, что точки останова, которые она производит, иногда не могут быть оценены и инициировать перерыв. Иногда раздражает.
Поиск вашей dll для всех точек входа, соответствующих вашему символу
x myexe!displayerror
это выведет все символы, соответствующие строке поиска и их точкам входа, затем установите точку останова по адресу
bp ff3c6100 // for myexe!displayError (int, HRESULT, wchar_t *)
Это установит конкретную точку останова при ударе этого адреса, или вы установите bp на другой адрес. Вы можете установить точку останова только один раз, очистить точку останова и выйти
bp /1 ff3c6100
и вы также можете выполнять команды, такие как сброс стека вызовов, переменные и продолжение:
bp ff3c6100 "kb;dv;g"
Вы также можете просто открыть исходный код при подключении WinDbg, перейти к строке кода, на которой вы хотите установить точку останова, и нажать F9 (то же самое, что и в Visual Studio), она будет приостановлена на некоторое время раньше устанавливая точку останова на этой линии, это предполагает, что у вас есть доступ к исходному коду.