Pergunta

Por que no CPP uma dll no modo de depuração é X10 maior do que liberação enquanto na Net são quase do mesmo tamanho?

Foi útil?

Solução

programa para depurar um C ++ um monte de informação extra tem de ser mantido na DLL para que o depurador pode descobrir mais sobre o código em tempo de execução. C ++ não tem nenhum requisito de tempo de execução para ser capaz de inspecionar o código diferente de C # que permite a ampla inspeção de tempo de execução também conhecido como reflexão. Esta informação está lá em C # se utilizando de depuração ou modo de versão.

Adicionalmente C ++ compilado é geralmente directamente para o código de máquina no modo de libertação o objectivo do compilador é optimizado o código, tanto quanto possível, por exemplo. remover todo e qualquer informação estranha e código. Em C # os compila compilador para um código pseudo que é apenas a tempo compilado conforme necessário. Este código mantém muito do que é necessário para depuração independentemente se é de lançamento ou de depuração que você está construindo. Tanto é assim que é possível escrever um de-compilador para dar-lhe a volta código de um tempo de execução de montagem.

Outras dicas

Talvez porque na Net, que é o motor de tempo de execução que lidar com todas as verificações de depuração, enquanto que no CPP, todos os cheques são compilados em DLL.

.Net DLLs contêm metadados que a segurança runtime suporte reflexão, segurança de tipo e código de acesso. As únicas coisas que estão nos PDBs é variável nomes e números de linha local.

Onde como em C ++ metadados adicionais e às vezes não-ops precisa ser injetada para depuração apoio.

Você quer dizer C # .NET não. Também depende do seu projeto.

Eu tenho um C ++ / CLI DLL que é 54K no lançamento e 94K em depuração,
e outro que é 88KB na liberação e 124KB na depuração.

O meu C ++ / CLI EXE que inclui MFC é 471KB na liberação e 4446KB em debug!

E então meu C # DLL é 135KB, em ambos os de depuração e liberação.

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