Pergunta

Tenho alguns problemas com um dos projetos em que estou trabalhando no Windows (64 bits). Às vezes, o programa trava, às vezes não, e suspeito que o problema esteja vinculado ao tempo de execução do C Linked C. Como posso detectar isso no Windows? Eu tentei com depends.exe, mas não relatou o CRT

Foi útil?

Solução

É improvável que você possa se vincular com sucesso a várias bibliotecas de tempo de execução C - você encontraria muitos conflitos de definição de símbolos que pelo menos produziriam avisos volumosos, e apenas um engenheiro imprudente os ignoraria.

Com depends, Eu me certificaria de usar a opção de perfil dinâmico, para verificar todas as dependências para os CRTLs dinâmicos que eles carregam. Se não aparecer nada, suspeito que seu problema esteja em outro lugar.

Eu suspeitaria que seu problema está em qualquer outro lugar, no entanto, pois as DLLs com APIs de nível C não deveriam, em regra, depender de estado compartilhado no CRTL - mais comumente o alocador de memória - e deveria ter adotado um protocolo padronizado para Gerenciamento de memória cross-API, como aloces de chamadas, usos de callee ou passagem em retornos de chamada de alocação de memória etc. Em outras palavras, vários CRTLs no mesmo processo normalmente não são um problema devido ao uso correto de um protocolo de gerenciamento de memória.

Para falhas transitórias, eu suspeitaria que multithreading ou corrupção de heap.

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