Código de falha no microsoft Visual Studio 2005, no LANÇAMENTO de configuração

StackOverflow https://stackoverflow.com/questions/8612

  •  08-06-2019
  •  | 
  •  

Pergunta

Eu tenho um espaço de trabalho para a execução de um H. 263 Codificador de Vídeo em um loop para 31 vezes i.e.o principal é executado 31 vezes para gerar 31 de diferentes fluxos de bits codificados.Este MS Visual Studio 2005 área de trabalho tem todos os C arquivos de origem.Quando eu criar uma "DEPURAÇÃO" de configuração para a área de trabalho e criar e executar ele, funciona muito bem, i.é.ele gera todo o 31 de arquivos de saída como o esperado.Mas quando eu definir a configuração do espaço de trabalho para "LIBERAR" mdoe, e repita o processo, o codificador falha em algum caso de teste executado.

Agora para depuração esta é verificado a seguir:

  1. Analisado o código para ver se havia alguma inicialização da variável que está sendo perdida em cada execução do codificador
  2. Verificada a várias espaço de trabalho(Solução) opções em ambos os modos (DEBUG e RELEASE).

Existem algumas diferenças óbvias, mas eu virei a otimização de opções relacionadas explicitamente mesmo em ambos os modos.

Mas ainda não prego o problema e encontrar uma solução para isso.Os ponteiros?

-Ajit.

Foi útil?

Solução

É difícil dizer qual é o problema pode ser, sem o cuidado de inspecionar o código.No entanto...

Uma das diferenças entre o debug e release cria é como a pilha de chamadas de função do quadro é o conjunto de backup.Há certas classes de coisas ruins que você pode fazer (como a chamada de uma função com o número errado de argumentos) que não são fatais em uma compilação de depuração, mas falha terrivelmente em uma versão de compilação.Talvez você pode tentar alterar o quadro de pilha de opções relacionadas (eu esquecer de que eles são chamados, desculpe) na versão de compilação para o mesmos como a compilação de depuração e veja se isso ajuda.

Outra coisa que poderia ser a de permitir que todos os avisos que você puder, e corrigi-los todos.

Outras dicas

Poderia ser um problema de simultaneidade de dois segmentos.A configuração de DEPURAÇÃO diminui a execução, portanto, o problema não ocorre.Mas, apenas um palpite.

Problema interessante..Você tem certeza que você não tem código de compilação condicional à espreita que não está sendo compilado no modo de versão?eu.e:

#if (DEBUG)
// Debug Code here
#else
// Release Code here
#endif

Isso é a única coisa que posso realmente pensar..Nunca experimentou nada parecido com isso mesmo..

Você pode adicionar os símbolos de depuração para a compilação de versão e executá-lo no depurador para ver onde e por que ele caiu?

Sim, aqueles safado acidentes são os mais difíceis de corrigir.Fortunatly, existem alguns passos que você pode fazer que vai lhe dar pistas antes de recorrer à manualmente olhando para o código e a esperança de encontrar a agulha.

Quando ele deixa de funcionar?Em cada teste?Em um teste específico?O que significa que o teste não que os outros não?

Qual é o erro?Se é uma violação de acesso, existe um padrão para o lugar onde isso acontece?Se os endereços forem baixos, isso pode significar que há uma uninitialised ponteiro em algum lugar.

É o programa deixar de funcionar com a configuração de Depuração, mas sem o depurador anexado?Se assim for, é mais provável que um segmento de sincronização problema como John Smithers, apontou.

Você já tentou executar o código através de um analisador tais como Purificar?É lento, mas é geralmente vale a pena esperar.

Tenta depurar a configuração de lançamento de qualquer maneira.Ele só vai despejo de assembléias, mas ele ainda pode dar uma indicação do que acontece, como se o código ponteiro salta no meio do lixo ou atinge um ponto de interrupção em uma biblioteca externa.

Você está em uma arquitetura Intel?Se não, assista a memória alignement erros, falha do disco rígido, sem aviso, em algumas arquiteturas e aqueles algoritmo de codec tendem a criar situações muito, já que são extremamente otimizado.

Você tem certeza que não há nenhum pré-compilar as directivas que, digamos, ignora alguns realmente importante de código no modo de edição, mas permite-lhes em Debug?

Além disso, temos implementado de log que podem apontar para a montagem precisa que está jogando o erro?

Gostaria de olhar para o acidente com mais detalhe - se cair em um caso de teste, em seguida, ele soa muito facilmente reproduzível, que normalmente é o maior desafio.

Outra coisa a considerar:no modo de depuração, as variáveis são inicializadas com 0xCCCCCCCC em vez de zero.Que pode ter alguns efeitos colaterais desagradáveis.

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