Existe alguma maneira para depurar o que está acontecendo depois que meu código .NET chama uma função em uma DLL não gerenciada via dllimport?

votos
4

Existe alguma maneira para depurar o que está acontecendo depois que meu código .NET chama uma função em uma DLL não gerenciada via dllimport?

Eu expor uma função dll dentro de um não gerenciado via dllimport. Quando eu chamar uma função que eu passo através do código, algo acontece e nunca retorna.

Existe alguma coisa que eu possa fazer, talvez com vista para depurar ou qualquer coisa para obter alguma informação? Ou estou SOL?

Publicado 27/08/2009 em 03:28
fonte usuário
Em outras línguas...                            


1 respostas

votos
6

Bem, para começar, certifique-se que a depuração código nativo habilitado na guia Debug de propriedades do seu projeto.

Se você tem o código fonte para o DLL que você está chamando para, em seguida, você deve ser capaz de configurá-lo para que você possa entrar no DLL nativa assim como você pode o código gerenciado. A maneira mais fácil de fazer isso é para adicionar o código fonte para o DLL nativa na mesma solução, e em seguida, conectar-se a saída desse projeto. Você vai precisar para assegurar que Visual Studio pode acessar tanto a DLL nativa e que pdb da DLL durante a execução de seu aplicativo C #.

Se você não tem o código-fonte para o DLL, então eu sugiro definir um ponto de interrupção imediatamente antes de a chamada para o método nativo. Em seguida, deixar o programa continuar e pausar o programa manualmente depois de um segundo ou dois. Certifique-se de que você ainda está olhando para o mesmo thread que chamou a DLL nativa e em seguida olhar para o espectador pilha de chamadas. Se você ver uma linha que diz "[Código externo]", certifique-se de que "Mostrar código externo" está marcada no menu de contexto. Quando isso estiver marcada, a pilha de chamadas pode ser capaz de dizer-lhe o que o método está em execução. O texto será em cinza, indicando que o método está em uma DLL externa. Se você estiver fazendo chamadas de método do Windows, então a instalação do Windows arquivos de símbolo de primeira pode permitir que o depurador para lhe dar mais informações ( http://www.microsoft.). Você também pode pausar e continuar o depurador várias vezes para ver o que a pilha de chamadas se parece em vários pontos de execução. A partir desta informação, você pode ser capaz de obter uma noção do que está acontecendo de errado.

Além disso, tente passar em argumentos diferentes, começando com o caso mais trivial que você pode ver se você tem o mesmo comportamento. Finalmente, tenha absoluta certeza de que você tem todos os seus metadados triagem correta.

Respondeu 27/08/2009 em 04:40
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more