Mi código C# llama a una función de biblioteca de terceros no administrada a través de P/Invoke, y la función no administrada está teniendo algunos efectos secundarios extraños. Quiero depurarlo y ver qué está haciendo.Entrando en una llamada P/Invoke en la vista de desarmado
Si depuro mi código de C# y trato de "entrar" en la llamada de P/Invoke, pasa a su lugar. No fue sorpresa, esperaba eso; no tiene el origen de esta DLL, y no le dije que estaba de acuerdo con ver la vista de desensamblaje.
Así que cambio el depurador a la vista de desensamblaje (Depurar> Windows> Desmontaje). Ahora veo las instrucciones x86 individuales en mi código JITted. De nuevo trato de entrar en la llamada de P/Invoke. Una vez más, da un paso hacia adelante, aunque claramente le dije que entrara en una instrucción x86 CALL. ¿Qué tan difícil es entrar en una LLAMADA x86?
Mi googlear hasta ahora me ha mostrado un par de opciones que pueden afectar a esto, y ya les he fijado:
- en Herramientas> Opciones> Depuración> General, "Habilitar Sólo mi código" es desenfrenado.
- En Proyecto> Propiedades> pestaña Depuración, se activa "Activar depuración de código no administrado".
No bueno. Visual Studio todavía se niega a intervenir.
No tengo un PDB para la DLL de terceros, pero eso no debería importar. No me importa el código fuente o la información de símbolos. (Bueno, en realidad serían realmente agradables, pero ya sé que no voy a obtenerlos.) Visual Studio puede realizar la depuración x86 (eso es lo que la vista Desmontaje es para), y todo lo que quiero hacer es ingrese al código x86.
¿Qué más debo hacer para que VS me permita seguir las instrucciones x86 dentro de una llamada P/Invoke?
¿Alguna vez descubrió esto? – Dennis
Han pasado algunos años desde que traté de hacer esto, pero según recuerdo, no, nunca conseguí que funcionara. –