Привет,
Я недавно смотрю на несколько стеков, и вручную я нахожу определенную вещь, которую хочу получить адрес, чтобы я мог в ней вникатьс ??
.
Например:
00 00000005`9c88a558 00007ffa`bc2713ed ntdll!NtWaitForMultipleObjects+0xa
01 00000005`9c88a560 00007ffa`be477d51 KERNELBASE!WaitForMultipleObjectsEx+0xed
02 00000005`9c88a840 00007ffa`be477773 kernel32!WerpLaunchAeDebug+0x23a1
03 00000005`9c88adb0 00007ffa`bc351c1f kernel32!WerpLaunchAeDebug+0x1dc3
04 00000005`9c88ade0 00007ffa`bedaf1b3 KERNELBASE!UnhandledExceptionFilter+0x23f
05 00000005`9c88aed0 00007ffa`bed91e26 ntdll!memset+0xaaf3
06 00000005`9c88af10 00007ffa`beda349d ntdll!_C_specific_handler+0x96
07 00000005`9c88af80 00007ffa`bed648d7 ntdll!_chkstk+0x9d
08 00000005`9c88afb0 00007ffa`beda262a ntdll!RtlRaiseException+0xf67
09 00000005`9c88b680 00007ffa`aafc1b52 ntdll!KiUserExceptionDispatcher+0x3a
0a 00000005`9c88bd80 00007ffa`ab14e820 function1(class foo1 * bar1 = 0x00000000`0eee4e10)+0xd2 [c:\path\source1.cpp @ 783]
0b 00000005`9c88bdc0 00007ffa`ab11b854 function2(class foo2 * bar2 = 0x00000000`0f034010)+0x540 [c:\path\source2.cpp @ 23044]
0c 00000005`9c88d420 00007ffa`ab06151c function3(class foo3 * bar3 = 0x00000005`9c88dd50)+0x584 [c:\path\source3.cpp @ 5671]
0d 00000005`9c88dcf0 00007ffa`aae1ef08 function4(class foo3 * bar3 = 0x00000000`80001a55)+0x3bc [c:\path\source4.cpp @ 218]
0e 00000005`9c88e7c0 00007ffa`aae2956b function5(unsigned short fcode = 0x3032, class foo3 * bar3 = 0x00007ffa`ab08e8de)+0x1fb8 [path\source5.cpp @ 108]
0f 00000005`9c88fab0 00007ffa`bed254f4 kernel32!BaseThreadInitThunk+0x22
10 00000005`9c88fae0 00000000`00000000 ntdll!RtlUserThreadStart+0x34
Мне интересно извлечь 3 адреса 0x000000059c88dd50
, 0x0000000080001a55
и 0x00007ffaab08e8de
и передать их автоматически для набора ?? ((foo3*) 0x000000059c88dd50)->WhatIAmInterestedIn
и т. д. команд, чтобы я мог быстро просмотреть выходные данные для получения результатов, представляющих интерес.
Есть ли способ сценария этого анализа, чтобы я мог тралить стек текущегонить для любых экземпляров bar3
, захватить этот адрес и использовать его в командах n
x ??
, просто отображая все, что он находит в окне команд, даже если это ошибка доступа к памяти, это может ускорить процесс для меня.
Я думал о !for_each_frame
, но должен признать, я даже не знаю, как запросить конкретный кадр на наличие или отсутствие bar3
и адреса внутри Windbg, кроме , делая это своими глазами!