Artigos

SetThreadContext failed Delphi 2007/2009

Por Anderson Luis Ferreira - janeiro/2010

Assertion failure SetThreadContext failedApós instalar o Windows 7/64bits e instalar o CodeGear Delphi 2009 tive um desagradável problema na depuração de meus projetos. 

Não importava o projeto ao depurar surgia uma mensagem SetThreadContext failed, especificamente na biblioteca bordbk105N.dll para Delphi 2007 e bordbk120N.dll para Delphi 2009.

Algumas pesquisas no Google mostrou que o problema acontece por ser realizada uma chamada invalida para API SetThreadContext. Em um blog encontrei uma solução que basicamente desabilita a verificação de um possível erro retornado pelo SetThreadContext, ou seja, o depurador ignora o erro não exibindo-o. 

Não é uma solução muito elegante, pois o depurar pode não trabalhar de maneira correta.  

Com os testes realizados por mim, não notei nenhuma diferença na depuração após aplicar esta correção. 

Para efetuar a correção deste problema, proceda da seguinte maneira:  

1. Fechar Delphi  

2. Localize bordbk105N.dll ou bordbk120N.dll (C:\Program Files (x86)\CodeGear\RAD Studio\ 6.0\bin\)  

3. Faça uma cópia de backup  

4. Abra em um editor hexadecimal (HexEditor funciona bem)  - http://www.physics.ohio-state.edu/~prewett/hexedit/

5. Acesse o menu Find, marque a opção HEX e Procure por "01 00 48 74 47 80 3D"  

6. Substitua "74", por "EB"  

9. Acesse o menu File, Salve As...

10. Abra o Delphi. Erro deve ter sumido.  

Este procedimento deve funcionar em versões anteriores do Delphi também, mas eu não testei ainda. 

Delphi 2007/2009 Debugger Assertion Error PatchEncontrei também uma ferramenta que faz toda a correção acima de forma automática para o Delphi 2007 e 2009. Basta clicar em “Apply Patch” e está feito. 

Pegue o patcher aqui: Delphi_Debugger_Fix.zip (169 KB) 

Nota: As correções explicadas neste artigo devem ser aplicadas por sua conta e risco. 

 

 

 

Referência em inglês: http://dmagin.wordpress.com/2009/07/21/windows-7-64bit-delphi-debugger-fix-workaround/