Depurar DLL... TEM JEITO?

Delphi

19/01/2004

Pessoal, como faço para depurar uma DLL que eu fiz no Delphi?


Danilorsa

Danilorsa

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

19/01/2004

Tem Sim !
No Dephi, menu ´Run´, ´Parameters´ em ´Host Application´, indique o programa que você tenha previamente criado para acessar esta DLL. Isto é tudo, agora basta rodar a dll ´F9´ e passar o debug :D


GOSTEI 0
Nigro

Nigro

19/01/2004

Mas dependendo das configurações do seu micro, pode haver travamentos.


GOSTEI 0
Nildo

Nildo

19/01/2004

Se for para resolver erros, eu aconselho um componente que eu so. O MadExcept. É só você compilar seu prgrama com ele ativo, e toda vez que der o erro ele vai mostrar uma telinha detalhadamente da onde que de o erro, em que Unit, em que procedure e até mesmo em que linha! O usuário tem a opção de enviar este relatório por e-mail, fechar a aplicação, continuar a aplicação ou reiniciar a aplicação. Segue abaixo um relatório criado por ele no momento em que eu pressionei um botão que faz uma divisão por zero:

date/time         : 2004-02-21 08:45
computer name     : BRUNO
user name         : BRUNO
operating system  : Windows 98 SE build 2222
system language   : Portuguese
system up time    : 46 minutes 2 seconds 
physical memory   : 0·119 MB (free/total)
system resources  : 28·66 (gdi/user)
free disk space   : (C:) 7,53 GB
process id        : $ffe9030d
executable        : PROJECT1.EXE
exec. date/time   : 2004-02-21 08:45
madExcept version : 2.6a
exception class   : EDivByZero
exception message : Division by zero.

main thread ($ffe85149):
004701b3 PROJECT1.EXE Unit1    28 TForm1.Button1Click
00450851 PROJECT1.EXE Controls    TControl.WndProc
004536cb PROJECT1.EXE Controls    TWinControl.WndProc
0044700c PROJECT1.EXE StdCtrls    TButtonControl.WndProc
0045061c PROJECT1.EXE Controls    TControl.Perform
00453803 PROJECT1.EXE Controls    DoControlMsg
00453e5f PROJECT1.EXE Controls    TWinControl.WMCommand
0046a7d8 PROJECT1.EXE Forms       TCustomForm.WMCommand
00450851 PROJECT1.EXE Controls    TControl.WndProc
004536cb PROJECT1.EXE Controls    TWinControl.WndProc
00468900 PROJECT1.EXE Forms       TCustomForm.WndProc
00453348 PROJECT1.EXE Controls    TWinControl.MainWndProc
0043a70c PROJECT1.EXE Classes     StdWndProc
bfb742b8 COMCTL32.DLL             #413
00454acd PROJECT1.EXE Controls    TWinControl.WMKeyUp
00450851 PROJECT1.EXE Controls    TControl.WndProc
004536cb PROJECT1.EXE Controls    TWinControl.WndProc
0044700c PROJECT1.EXE StdCtrls    TButtonControl.WndProc
00453348 PROJECT1.EXE Controls    TWinControl.MainWndProc
0043a70c PROJECT1.EXE Classes     StdWndProc

modules:
00400000 PROJECT1.EXE                C:\ARQUIVOS DE PROGRAMAS\BORLAND\DELPHI6\PROJECTS
05470000 BORDBK60.DLL 50.4.227.0     C:\ARQUIVOS DE PROGRAMAS\ARQUIVOS COMUNS\BORLAND SHARED\DEBUGGER
65340000 OLEAUT32.DLL 2.40.4518.0    C:\WINDOWS\SYSTEM
65f00000 OLE32.DLL    4.71.3328.0    C:\WINDOWS\SYSTEM
70100000 RPCRT4.DLL   4.71.3328.0    C:\WINDOWS\SYSTEM
70200000 WININET.DLL  6.0.2600.0     C:\WINDOWS\SYSTEM
70bd0000 SHLWAPI.DLL  6.0.2600.0     C:\WINDOWS\SYSTEM
71450000 CRYPT32.DLL  5.131.1877.5   C:\WINDOWS\SYSTEM
75e30000 WSOCK32.DLL  4.10.0.1998    C:\WINDOWS\SYSTEM
75e70000 WS2HELP.DLL  4.10.0.1998    C:\WINDOWS\SYSTEM
75e90000 WS2_32.DLL   4.10.0.2222    C:\WINDOWS\SYSTEM
78000000 MSVCRT.DLL   6.1.8924.0     C:\WINDOWS\SYSTEM
794d0000 MSWSOCK.DLL  4.10.0.2222    C:\WINDOWS\SYSTEM
79e60000 MSOSS.DLL    5.131.1877.3   C:\WINDOWS\SYSTEM
7fcb0000 SHELL32.DLL  4.72.3612.1700 C:\WINDOWS\SYSTEM
7fe10000 COMDLG32.DLL 4.72.3510.2300 C:\WINDOWS\SYSTEM
bfb70000 COMCTL32.DLL 5.81.4704.1100 C:\WINDOWS\SYSTEM
bfe70000 VERSION.DLL  4.10.0.1998    C:\WINDOWS\SYSTEM
bfe80000 ADVAPI32.DLL 4.80.0.1675    C:\WINDOWS\SYSTEM
bff20000 GDI32.DLL    4.10.0.1998    C:\WINDOWS\SYSTEM
bff50000 USER32.DLL   4.10.0.2222    C:\WINDOWS\SYSTEM
bff70000 KERNEL32.DLL 4.10.0.2222    C:\WINDOWS\SYSTEM

disassembling:
[...]
004701a9   push    eax
004701aa   mov     eax, $a
004701af   pop     edx
004701b0   mov     ecx, edx
004701b2   cdq
004701b3 » idiv    ecx
004701b5   lea     edx, [ebp-4]
004701b8   call    -$49bed ($4265d0)      ; IntToStr
004701bd   mov     eax, [ebp-4]
004701c0   call    -$26ef5 ($4492d0)      ; ShowMessage
004701c5   xor     eax, eax
[...]


Viram? Linha 28, Unit1.
Este pacote (MadCollection) também tem units para você poder criar Hook para [b:a4a0832335]funções[/b:a4a0832335] do Windows ou DLLs também :shock:
www.Madshi.net


GOSTEI 0
Cebikyn

Cebikyn

19/01/2004

Nildo, e pq vc não sugeriu isso antes pro PBB Player?

Agora falando sério: muito bom esse comp, vou pegar e colocar em (quase) todos os meus apps, inclusive o player.


GOSTEI 0
Nildo

Nildo

19/01/2004

Depois de instalado, aparece em Project -> MadExceptSettings

Dae vc marca ´Handle Exceptions´ e ´append map file to binary´. Ele vai aumentar o tamanho do EXE pq vai colocar o arquivo de mapa dentro do EXE. Senao marcasse o ´append map file to binary´ um arquivinho .MAP deve ir junto ao executável.

Ahh mais uma coisa: O Mathias (quem desenvolveu) me deixou bem claro que é FREE para uso NÃO COMERCIAL. Senão tem que pagar.

Eu uso em quase todos meus programas.
Não se esqueça que o UPX não deve ser passado no executável que contenha o MadExcept. Senão ele não mostra onde está o erro (Linha, unit).

Okz?


GOSTEI 0
Otto

Otto

19/01/2004

contenha o MadExcept. Senão ele não mostra onde está o erro (Linha, unit). Okz?



diga la, esse mad+upx= tudo... seria uma excelente dupla....

ótimo componente. :wink:


GOSTEI 0
Nildo

Nildo

19/01/2004

Eu acho que o ASPACK não influencia no MadExcept. Só que o AsPack é pago


GOSTEI 0
Otto

Otto

19/01/2004

onde posso achar esse aspack?


GOSTEI 0
Cebikyn

Cebikyn

19/01/2004

http://www.aspack.com/


GOSTEI 0
POSTAR