Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma DLL (biblioteca de vínculo dinâmico) é uma biblioteca que contém código e dados que podem ser usados por mais de um aplicativo. Você pode usar o Visual Studio para criar, compilar, configurar e depurar DLLs.
Criar uma DLL
Os seguintes modelos de projeto do Visual Studio podem criar DLLs:
- Biblioteca de Classes (.NET, .NET Framework e outras plataformas de aplicativo)
- Biblioteca de controle do Windows Forms (.NET e .NET Framework)
- Dynamic-Link Biblioteca (DLL) (C++)
A depuração de uma Biblioteca de Controle dos Windows Forms é semelhante à depuração de uma Biblioteca de Classes. Para obter mais informações, consulte Controles do Windows Forms.
Normalmente, você chama uma DLL de outro projeto. Ao depurar o projeto de chamada, dependendo da configuração da DLL, você pode intervir e depurar o código DLL.
Configuração de depuração de DLL
Quando você usa um modelo de projeto do Visual Studio para criar um aplicativo, o Visual Studio cria automaticamente as configurações necessárias para configurações de build de Depuração e Lançamento. Você pode alterar essas configurações, se necessário. Para obter mais informações, consulte os seguintes artigos:
- Como definir as configurações de depuração e lançamento
- Configurações do projeto para uma configuração de depuração de C++
- Configurações do projeto para configurações de depuração do .NET C#
- Configurações do projeto para debug de configurações do C#
- Definições do projeto para uma configuração de depuração do Visual Basic
Definir o atributo DebuggableAttribute do C++
Para que o depurador se conecte a uma DLL C++, o código C++ deve emitir DebuggableAttribute
.
Para definir DebuggableAttribute
:
Selecione o projeto de DLL do C++ no Gerenciador de Soluções e selecione o ícone Propriedades ou clique com o botão direito do mouse no projeto e selecione Propriedades.
No painel Propriedades, em Vinculador>Depuração, selecione Sim (/ASSEMBLYDEBUG) para Assembly Depurável.
Para obter mais informações, consulte /ASSEMBLYDEBUG.
Definir locais de arquivo DLL C/C++
Para depurar uma DLL externa, um projeto de chamada deve ser capaz de localizar a DLL, seu arquivo .pdb e quaisquer outros arquivos necessários pela DLL. Você pode criar uma tarefa de build personalizada para copiar esses arquivos para sua <pasta> de projeto\Pasta de saída de depuração ou copiar os arquivos lá manualmente.
Para projetos C/C++, você pode definir localizações de cabeçalho e arquivo LIB nas páginas de propriedades do projeto, em vez de copiá-los para a pasta de saída.
Para definir o cabeçalho C/C++ e os locais de arquivo LIB:
Selecione o projeto de DLL C/C++ no Gerenciador de Soluções e selecione o ícone Propriedades ou clique com o botão direito do mouse no projeto e selecione Propriedades.
Na parte superior do painel Propriedades , em Configuração, selecione Todas as Configurações.
Em C/C++>Gerais>Diretórios de Inclusão Adicionais, especifique a pasta que contém os arquivos de cabeçalho.
Em Linker>Geral>Diretórios de Bibliotecas Adicionais, especifique a pasta que contém arquivos LIB.
Em Vinculador>Entrada>Dependências Adicionais, especifique o caminho completo e o nome do arquivo para os arquivos LIB.
Selecione OK.
Para obter mais informações sobre as configurações de projeto do C++, consulte a referência da página de propriedades do Windows C++.
Criar uma versão de debug
Crie uma versão de depuração da DLL antes de iniciar a depuração. Para depurar uma DLL, um aplicativo de chamada deve ser capaz de localizar seu arquivo .pdb e quaisquer outros arquivos necessários para a DLL. Para saber mais, veja Como definir as configurações de depuração e lançamento.
Você pode criar uma tarefa de compilação personalizada para copiar os arquivos DLL para a <pasta de projeto de chamada>\Depurar pasta de saída, ou pode copiar os arquivos manualmente.
Certifique-se de chamar a DLL em seu local correto. Isso pode parecer óbvio, mas se um aplicativo de chamada encontrar e carregar uma cópia diferente da DLL, o depurador nunca atingirá os pontos de interrupção definidos.
Depurar uma DLL
Você não pode executar uma DLL diretamente. Ele deve ser chamado por um aplicativo, geralmente um arquivo .exe .
Para depurar uma DLL, você pode iniciar a depuração do aplicativo de chamada ou depurar do projeto DLL especificando seu aplicativo de chamada. Você também pode usar o depurador Janela imediata para avaliar as funções ou métodos de DLL em tempo de design, sem usar um aplicativo de chamada.
Iniciar a depuração do aplicativo de chamada
O aplicativo que chama uma DLL pode ser:
- Um aplicativo de um projeto do Visual Studio na mesma solução ou em uma solução diferente da DLL.
- Um aplicativo existente que já está implantado e em execução em um computador de teste ou de produção.
- Localizado na Web e acessado por meio de uma URL.
- Um aplicativo Web com uma página da Web que insira a DLL.
Antes de começar a depurar o aplicativo de chamada, defina um ponto de interrupção na DLL. Veja Introdução aos pontos de interrupção. Quando o ponto de interrupção da DLL é atingido, você pode avançar pelo código, observando a execução em cada linha. Para obter mais informações, consulte Navegar no código no depurador.
Para depurar uma DLL de um aplicativo de chamada, você pode:
Abra o projeto do aplicativo de chamada e inicie a depuração selecionando Depurar>Iniciar Depuração ou pressionando F5.
ou
Anexe a um aplicativo que já está implantado e em execução em um computador de teste ou de produção. Use esse método para DLLs em sites ou em aplicativos Web. Para obter mais informações, consulte Como anexar a um processo em execução.
Durante a depuração, você pode usar a janela Módulos para verificar as DLLs e .exe arquivos que o aplicativo carrega. Para abrir a janela Módulos, durante a depuração, selecione Depurar>Windows>Módulos. Para obter mais informações, consulte Como usar a janela Módulos.
Usar a janela Imediata
Você pode usar a janela Imediata para avaliar funções ou métodos de DLL em tempo de design. A janela Imediata desempenha o papel de um aplicativo de chamada.
Observação
Você pode usar a janela Imediata em tempo de design com a maioria dos tipos de projeto. Não há suporte para SQL, projetos Web ou script.
Por exemplo, para testar um método nomeado Test
na classe Class1
:
Com o projeto DLL aberto, abra a janela Imediata selecionando Depurar>o Windows>Imediato ou pressionando Ctrl+Alt+I.
Instancie um objeto do tipo
Class1
digitando o seguinte código C# na janela Imediata e pressionando Enter. Esse código gerenciado funciona para C# e Visual Basic, com alterações de sintaxe apropriadas:Class1 obj = new Class1();
Em C#, todos os nomes devem ser totalmente qualificados. Todos os métodos ou variáveis devem estar no escopo e no contexto atuais quando o serviço de idioma tenta avaliar a expressão.
Supondo que
Test
tenha umint
parâmetro, avalieTest
usando a janela Imediata :?obj.Test(10);
O resultado é impresso na janela Imediata .
Você pode continuar a depuração do
Test
colocando um ponto de interrupção dentro dele e avaliando a função novamente.O ponto de interrupção será atingido e você poderá percorrer
Test
. Após a execução doTest
, o depurador voltará ao modo de design.
Depuração de modo misto
Você pode escrever um aplicativo de chamada para uma DLL no código gerenciado ou nativo. Caso seu aplicativo nativo chame uma DLL gerenciada e você queira depurar ambos, é possível habilitar os depuradores gerenciado e nativo nas propriedades do projeto. O processo exato depende se você quer iniciar a depuração do projeto DLL ou do projeto de aplicativo de chamada. Para obter mais informações, confira Como depurar no modo misto.
Você também pode depurar uma DLL nativa de um projeto de chamada gerenciada. Para obter mais informações, consulte Como depurar código gerenciado e nativo.
Conteúdo relacionado
- Depurar código gerenciado
- Preparar-se para depurar projetos C++
- Tipos de projeto C#, F# e Visual Basic
- Definições do projeto para uma configuração de depuração do C++
- Configurações do projeto para configurações de depuração do .NET C#
- Configurações de projeto para debug do C#
- Definições do projeto para uma configuração de depuração do Visual Basic
- Segurança do depurador