Pergunta

O Debug ponto de interrupção funciona bem em todas as outras 38 unidades do meu sistema. Mas, na minha DataModule, que tem + - 10.000 linhas, desativa delphi, em seguida, depois que eu lançamento pela F9 / F8 / F7. Em qualquer parte de fonte dessa unidade, mesmo em etapas obrigatory como OnCreate, SQLConnection.Active: = true, etc. Detalhe: funciona bem até que + - 20 dias atrás. Estou usando D7 e ter todas as fontes de componentes também. obrigado Felipe

Foi útil?

Solução 4

Eu descobri este problema. É um comportamento estranho em Delphi7 que limita o número de campos na seção de classe de interface, entre: Tipo de TDM = class (TDataModule) e setor privado. Eu apaguei alguns campos (DataSet Campos (+ -40 campos)) e degub corridas novamente. I adicionar estes campos de novo, e de depuração não é executado. Eu tenho certeza que é um limite, porque não mather quais campos componente I excluído. Tentei com vários campos, de diferentes tabelas também, adicionando, testar e excluir. É uma pena, mas é verdade ... Obrigado por sua ajuda.

Outras dicas

Tente fazer uma compilação completa (Shift + F9). Se isso não funcionar, então o que acontece se você simular um ponto de interrupção no código com o abaixo?

asm int 3 end;

Verifique se há várias cópias do arquivo de origem para o datamodule. Às vezes, o código que você acha que você está executando não é o código do compilador e depurador está vendo.

Em seguida, certifique-se de não ter desligado acidentalmente depuração no seu código com {$ D-} ou {$ DebugInfo OFF}. Isso pode desligar a depuração de informações para uma única unidade.

Além disso, certifique-se que você tenha ligado Integrado depuração em Ferramentas | Opções | Opções Debugger. Eu sei que você disse que você poderia depurar outros lugares, mas não pode ferir para se certificar de que a depuração integrado não se desligado acidentalmente alguma forma.

Eu tenho uma vaga lembrança de que a depuração de arquivos muito grandes era de buggy em D7 de idade. Tente quebrar seu grande unidade em várias classes e se se pode depurar fora de sua unidade. Outra opção poderia ser para desligar debuginfo em seu arquivo grande, exceto a seção que você deseja depurar. É uma tentativa vale a pena.

Há um post no blog de Steve Trefethen, um tempo atrás, explicando algumas possíveis razões , embora se você diz que pode depurar outras unidades, eu duvido que eles aplicam.

Nós tivemos o mesmo problema com um grande DataModule em Delphi 5 que não nos deixaria depurá-lo, e tipo de colocá-lo para baixo para ser um arquivo muito grande para depurar e Delphi não gostando. Quando nos mudamos para Delphi 2007, poderíamos depurá-lo novamente. Não sei por que, nada tinha mudado (código sábio).

Felipe, é a unidade que não vai permitir que você depuração em uma dll que está sendo movido para dentro ou fora da memória? Eu encontrei quando a depuração dll é que se eu fizer alguma coisa no executável que código é executado em outro dll ou descarrega o dll que a unidade problema é in - Delphi irá desativar todos os pontos de interrupção. Normalmente, um reinício do Delphi e certificando-se de manter uma única instância de dll da unidade problema na memória é a única solução para este problema.

Eu duvido que tamanho é o problema, como eu tenho uma unidade de linha 17k que eu depurar regularmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top