Me gustaría tener un descanso en la función SetTimer para ver qué componentes registrar qué temporizadores con qué valores. es posible?Debug Break en Win32 Api funciones
Respuesta
Sí, puedes hacer esto. Primero asegúrese de tener la configuración public symbols para su depurador.
SetTimer vive en user32 pero eso es exactamente como se exporta. La forma más fácil de hacerlo es con el depurador de línea de comandos, NTSD. Necesitamos su nombre real, a fin de buscar símbolos en user32 ese partido:
0:000> x user32!*timer*
759992b9 USER32!NtUserValidateTimerCallback = <no type information>
759977d5 USER32!NtUserSetTimer = <no type information>
759e4f13 USER32!NtUserSetSystemTimer = <no type information>
759993bf USER32!NtUserKillTimer = <no type information>
Ah-ha! Su símbolo de depuración es NtUserSetTimer:
0:000> bp user32!NtUserSetTimer
En Visual Studio, puede averiguar dónde SetTimer vive por escribiendo un programa simple rasguño, y luego poner un punto de interrupción y hacer clic derecho y seleccionar "Ir al desmontaje":
int _tmain(int argc, _TCHAR* argv[]) {
SetTimer(NULL, 0, 0, NULL);
004113BE mov esi,esp
004113C0 push 0
004113C2 push 0
004113C4 push 0
004113C6 push 0
004113C8 call dword ptr [[email protected] (418338h)]
Si damos un paso en esa llamada, después de aterrizar aquí:
[email protected]:
759977D5 mov eax,123Dh
759977DA mov edx,7FFE0300h
759977DF call dword ptr [edx]
759977E1 ret 10h
Así que el de poner un breakpoint allí en Visual Studio, usted tiene que utilizar la context operator en el punto de interrupción. Seleccione de los menús: Depuración -> Nuevo punto de interrupción -> Rotura en la función, a continuación, introduzca:
{,,user32.dll}[email protected]
Here's a walkthrough, with screenshots, para VS2005. Tenga en cuenta que para VS2008 + usted no necesita ingresar los nombres de las funciones decoradas (¿quizás esa sea la razón por la cual la descripción anterior no funcionó directamente? ¿Cuál es su plataforma/IDE?).
[Editar:] Definitivamente necesita símbolos públicos de MS para poder ubicar la API Win32 en binarios. La ruta más corta es ir a Herramientas/Opciones/Depuración/Símbolos, luego pegue 'http://msdl.microsoft.com/download/symbols' en 'ubicaciones de pdb'. Se recomienda encarecidamente, aunque no necesariamente, establecer un caché local para los pdb descargados (las primeras cargas de pdb pueden durar unos minutos) y, para sus necesidades, probablemente debería desmarcar 'Buscar en las ubicaciones anteriores solo cuando los símbolos se carguen manualmente'. Habrá un retraso en el inicio ya que todos los símbolos están cargados, pero no tendrá que buscar user32.dll (o lo que sea que contenga la función que desea interrumpir) y cargar su pdb manualmente.
- 1. Ruby win32 api interface
- 2. Gui's con Win32 API
- 3. Win32 API GetShortPathName llamada error en Fa #
- 4. Juego de bucle en Win32 API
- 5. Creando una tabla usando Win32 API
- 6. Llamadas de API de Mocking y Win32
- 7. ¿Por qué este break break break no funciona?
- 8. Diferencia entre PathAppend y PathCombine en Win32 API
- 9. Cómo utilizar Marshal.ReleaseComObject con funciones nativas Win32
- 10. Cómo extraer automáticamente las declaraciones API de Win32 en C#?
- 11. Funciones de Win32 API vs. sus contrapartes CRT (ej. CopyMemory vs. memcpy)
- 12. Cómo hacer varias ventanas usando Win32 API
- 13. Win32 pila API caminar con MinGW/MSYS?
- 14. Win32 API analógica de envío/captura SIGTERM
- 15. WinRT como reemplazo de Win32 API
- 16. Llamando al método Win32 API desde Java
- 17. ¿Cómo crear hilos con Win32 API?
- 18. elección entre win32 API y .NET framework
- 19. C++ Win32 API documentación fuera de línea?
- 20. ¿Cómo matar procesos por nombre? (Win32 API)
- 21. función api win32 para obtener la velocidad actual del procesador
- 22. ¿Por qué Win32-API tiene tantos tipos personalizados?
- 23. La elección entre WPF, wxWidgets, API Win32 y MFC
- 24. Llevando la ventana al frente en C# usando Win32 API
- 25. Obtener el elemento seleccionado en ListView win32 API
- 26. Cómo seleccionar un elemento en un TreeView usando Win32 API
- 27. ¿Qué es un nivel más bajo en Windows: la biblioteca C o las funciones API de Win32 correspondientes?
- 28. ¿Las funciones LoadLibrary, FreeLibrary y GetModuleHandle Win32 son seguras?
- 29. Quiero saber qué funciones están disponibles desde un Win32.DLL
- 30. ¿Habilitar/deshabilitar monitores múltiples a través de la API de Win32 o la API de NVidia?
No sabía que es posible establecer puntos de interrupción mediante comandos. Nunca he usado esta característica. ¿Dónde ingreso la cadena que me proporcionó? – ronag
El primero es para el depurador de línea de comandos: http://www.microsoft.com/whdc/devtools/debugging/default.mspx –
Gran respuesta. Gracias. – ronag