Artigo: 166275 - Última revisão: quarta-feira, 21 de Junho de 2006 - Revisão: 1.3

Como depurar um componente do Visual Basic no Visual C++ de código nativo

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

O depurador do Visual Basic 5.0 permite-lhe depurar o código no momento da estruturação antes de compilar numa .exe, .dll ou .ocx. Se estiver a depurar componentes COM criados pelo Visual Basic, pode depura-out-of-process, com vários projectos na mesma instância do Visual Basic 5.0 ou executando instâncias separadas de Visual Basic 5.0 com o cliente com um e o componente do COM em execução no outro.

Se pretende depurar seus componentes depois de eles são compilados, não poderá utilizar o depurador do Visual Basic 5.0 porque apenas irá depurá-los no momento da concepção. Para depurar um componente compilado do Visual Basic, terá de utilizar a funcionalidade de depurador do Visual C++ 5.0. Seguem-se situações quando poderá ser necessário depurar um componente compilado do Visual Basic:
  • Se estiver a criar um controlo ActiveX para utilização num contentor diferente do Visual Basic 5.0.
  • num ambiente de execução aplicação tal como o Microsoft Transaction Server onde só são permitidas executar .DLLs compilado.
  • Se suspeitar que o componente do Visual Basic tiver um comportamento diferente no momento da concepção não está compilada.
Este artigo explica como efectuar este procedimento no ambiente do Microsoft Developer Studio. Tem de ter do Visual Basic 5.0 e Visual C++ 5.0 instalado no computador desenvolvimento a seguir neste exemplo.

Mais Informação

Os seguintes passos suponha que já tem um EXE padrão criados pelo Visual Basic 5.0 (.exe), ActiveX DLL (.dll), EXE ActiveX (.exe) ou controlo ActiveX (.ocx) que pretende depurar.
  1. No Visual Basic 5.0, abra o projecto de Visual Basic que pretende depurar. No menu ' ficheiro ', escolha ' criar <yourproject>.exe. Clique no botão Opções e seleccione o separador ' Compilar. Escolha Compilar para criar informações de depuração simbólicas e código nativo. Em seguida, seleccione OK e em ' OK ' novamente para compilar o componente.
  2. No menu ' Visual C++ 5.0 ficheiro ', seleccione Abrir espaço de trabalho. Na caixa de diálogo Abrir a área de trabalho, definido ficheiros do tipo para files(*.*) todos os e, em seguida, seleccione o componente compilado.
  3. Novo menu Visual C++ 5.0 ficheiro, escolha abrir área de trabalho (não abrir da) e abra o módulo do Visual Basic (.bas), o formulário (.frm) ou a classe (.cls) que pretende depurar. Definir pontos de quebra (F9) relógios, instruções passo-a, etc., que faria para um programa normal. Também poderá visualizar informações variáveis no ambiente de depuração vai ao menu Ferramentas do Visual C++ 5.0, seleccionando opções e, em seguida, seleccionando o separador Debug. No separador ' depuração ', coloque uma marca junto de cadeias unicode de visualização.

    Não podem ser vistas variáveis num thread separado. Um exemplo seria um thread em segundo plano com uma .ocx ou um thread de fundo do vb ocultos. Globals do Visual Basic são por apartment ou thread única, por isso, não verá-los na pilha se estiver num outro thread.
    1. EXE padrão: A partir do menu de criação no Visual C++ 5.0, seleccione Iniciar Debug depois ir ou prima a tecla F5. Quando o componente compilado do Visual Basic atinge a linha que pode definir um ponto de interrupção no, vai parar no Visual C++ 5.0 e permitem-lhe efectuar operações de depuração normal.
    2. ActiveX EXE, DLL e OCX:-é um pouco diferente para as DLLs que tem de especificar um exe para depurar com. Para tal, no menu Project, seleccione definições e, em seguida, clique no separador Debug. Em execução para a sessão de depuração texto especificar o ficheiro .exe que referencie o dll. Siga passo 4a que iniciará o executável e o .dll e o depurador do Visual C++ 5.0 ficará até onde definiu o ponto de interrupção no seu .dll.
    3. ActiveX DLL em execução no Microsoft Transaction Server (MTS): Para configurar este, seleccione definições a partir do Visual C++ 5.0 menu do Project e, em seguida, clique no Debug separador. Executável para caixa de texto de sessão de depuração, especificar MTX.EXE. Em seguida, na caixa de texto de argumentos de programa coloque /p: {00000000-0000-0000-0000-000000000000} onde deverá substituir o 0 com o ID do pacote MTS real. O ID do pacote pode ser obtido ao examinar as propriedades do pacote no Transaction Server Explorer. Seguinte passo 4a acima do qual iniciará MTX.EXE e a dll. Executar agora o .exe de base de cliente efectua uma chamada para o COM componente em execução em MTS e o depurador do Visual C++ 5.0 ficará até onde definiu o ponto de interrupção no seu .dll.
      1. A dll está a ser chamada o caminho do sistema?
      2. Novo tem acidentalmente guardados dll o objecto com, assim apagar MTS alterações ao registo?
      3. Pode ter várias cópias do objecto com dll colocar à volta e está a definir pontos de interrupção em que não é carregado?
      4. Do mesmo modo para 3, poderá tem várias cópias da dll de com não colocar à volta?
      5. Ocorreu uma vaza aparentemente muito stupid que era o que deve copiar a DLL com informações simbólicas para o MTS e directório a partir daí adicionar essa DLL como um pacote para o MTS explorer. Se não fizer isto, depuração simbólica dentro do MTS componente não funciona.

        Além disso, certifique-se de que kill mtx.exe tudo em execução antes de iniciar a cópia no depurador. Quando iniciar, é executado ou fá-lo imediatamente o encerramento? Repare quaisquer mensagens de registo de eventos registadas pelo MTS. Para iniciar de ponto de partida seguro, poderá pretender completamente eliminar a aplicação, em seguida, recriá-lo, reinstale dll o componente, etc..
    4. DLL de ActiveX em execução no Internet Information Server (IIS): Uma vez que o IIS é executado como um serviço NT, é necessário conceder a próprio permissão para actuar como parte do sistema operativo. Para tal, vá para NT ferramentas administrativas e seleccione Gestor de utilizadores. Se estiver a utilizar Gestor de utilizadores para domínios do NT Server, certifique-se de que tiver seleccionado o nome do computador como o domínio a partir do menu ' ficheiro '. Em seguida, escolha direitos de utilizador no menu políticas de. Na caixa de diálogo direitos de utilizador, coloque uma marca de verificação junto a Mostrar direitos avançados dos utilizadores e seleccione "Actuar como parte do sistema operativo" na caixa de combinação. Clique no botão ' Adicionar ' e escreva "domainxxx\userxxx" na área de texto ou seleccione o nome de utilizador a partir da caixa de listagem. Clique em OK e deverá agora ter os privilégios correctos. Para iniciar a sessão de depuração em Visual C++ 5.0, vá para o menu de compilação, seleccione Iniciar Debug e anexar para execução. Coloque uma marca de verificação junto a Mostrar processos de sistema, em seguida, seleccione inetinfo e clique em OK. Agora carregar um ficheiro de .htm ou .asp de cliente que irá efectuar uma chamada para o componente ActiveX. Se seguir as instruções no passo 3 acima, deverá ser capaz de percorra o código Visual Basic.
    Nota que tenha sido indicado que seguindo as directrizes no passo 4d deste artigo, o ponto de interrupção não é atingido. Depois de algumas tentativas poderá que, de modo de ponto de interrupção ser atingido, é necessário carregar a DLL que está a ser depurada nas definições de projecto dll adicionais. Além disso, o ponto de interrupção não for seleccionado da primeira vez que chama-se a página HTML, a menos que defina o ponto de interrupção depois de anexar ao processo tiver sido efectuado. Foi testada em Windows NT 4.0 Workstation SP3 com o Peer Web Services e o Visual Studio SP2.
Outra funcionalidade do Visual C++ é a capacidade cruzada processo e depuração de máquina cruzada. Se estiver a executar num depurador e chamar uma .dll com informações de depuração, irá iniciar automaticamente outra instância do depurador e a origem para que pode depurar nela.

Tenha em atenção que se o exe for compilado optimizado para o tamanho ou a velocidade, linhas de código inactividade deve ser compiladas fora do projecto.


A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbhowto kbusage KB166275 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 166275  (http://support.microsoft.com/kb/166275/en-us/ )