Ver Mensaje Individual
  #5  
Antiguo 11-04-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Otra alternativa, con la JVCL, más concretamente con la JCL, que ya sabemos es gratuita.

En el primer Form o datamodule:
Código Delphi [-]

initialization
 //--------------------------------------------------------------------------------------------------
 // JclDebug initialization and finalization for VCL application
//--------------------------------------------------------------------------------------------------

   // Enable raw mode (default mode uses stack frames which aren't always generated by the compiler)
  Include(JclStackTrackingOptions, stRawMode);
  // Disable stack tracking in dynamically loaded modules (it makes stack tracking code a bit faster)
  Include(JclStackTrackingOptions, stStaticModuleList);

  // Initialize Exception tracking
  JclStartExceptionTracking;

finalization

  // Uninitialize Exception tracking
  JclStopExceptionTracking;

El resultado de una excepción, aunque se puede obtener más info, yo me contento con el Call Stack que lo envío a un archivo de texto. Aquí ves tooooooda la pila de llamadas desde que se inició la aplicación "MiPrograma.exe"
Código Delphi [-]
17:23:22:075 > 09/04/2008 17:23:22:075{--------------------------- INICIO DE SESION ---------------------------}
17:23:31:709 > ** EXCEPCION ** > SqlCode: -625  ClassName: EMDOFirebirdError
validation error for column IDCLIENTE, value "*** null ***"
Este mensaje anterior lo tengo en el Application.OnException


Stack :
[0052B51B] MDO.MDODataBaseError (Line 390, "MDO.pas" + 41) + $13
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053254E] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2197, "MDOCustomDataSet.pas" + 30) + $F
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[005319DC] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1759, "MDOCustomDataSet.pas" + 8) + $2
[0053254E] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2197, "MDOCustomDataSet.pas" + 30) + $F
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[00478AFF] Controls.TWinControl.DefaultHandler + $D7
[004759B0] Controls.TControl.WndProc + $188
[00478A1B] Controls.TWinControl.WndProc + $157
[0046B2B8] StdCtrls.TButtonControl.WndProc + $6C
[004A4BC4] JvExStdCtrls.TJvExButton.WndProc + $4E4
[004A4C00] JvExStdCtrls.TJvExButton.WndProc + $520
[0041FB48] Classes.TThreadList.UnlockList + $4
[004319C0] Graphics.FreeMemoryContexts + $98
[00478698] Controls.TWinControl.MainWndProc + $2C
[004786AD] Controls.TWinControl.MainWndProc + $41
[0042A648] Classes.StdWndProc + $14
[00478AFF] Controls.TWinControl.DefaultHandler + $D7
[004688AD] StdCtrls.TCustomEdit.DefaultHandler + $2D
[004759B0] Controls.TControl.WndProc + $188
[004A1FA0] JvExControls.TJvExCustomControl.WndProc + $4E4
[00478A1B] Controls.TWinControl.WndProc + $157
[0041FB48] Classes.TThreadList.UnlockList + $4
[004319C0] Graphics.FreeMemoryContexts + $98
[00478698] Controls.TWinControl.MainWndProc + $2C
[004786AD] Controls.TWinControl.MainWndProc + $41
[0042A648] Classes.StdWndProc + $14
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[0042A648] Classes.StdWndProc + $14
[00490732] Forms.Default + $3A
[0049095A] Forms.TCustomForm.ClientWndProc + $1D6
[00478A1B] Controls.TWinControl.WndProc + $157
[0041FB48] Classes.TThreadList.UnlockList + $4
[004319C0] Graphics.FreeMemoryContexts + $98
[00478698] Controls.TWinControl.MainWndProc + $2C
[004786AD] Controls.TWinControl.MainWndProc + $41
[0042A648] Classes.StdWndProc + $14
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[0053252A] MDOCustomDataSet.TMDOCustomDataSet.InternalGetFieldData (Line 2193, "MDOCustomDataSet.pas" + 26) + $D
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[00402658] System.SysGetMem + $10C
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[00531C0F] MDOCustomDataSet.TMDOCustomDataSet.GetFieldData (Line 1855, "MDOCustomDataSet.pas" + 8) + $7
[005319D0] MDOCustomDataSet.TMDOCustomDataSet.GetActiveBuf (Line 1757, "MDOCustomDataSet.pas" + 6) + $2
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[0047AE61] Controls.TWinControl.CMInvalidate + $9
[004759B0] Controls.TControl.WndProc + $188
[00478AFF] Controls.TWinControl.DefaultHandler + $D7
[004759B0] Controls.TControl.WndProc + $188
[00478A1B] Controls.TWinControl.WndProc + $157
[00478B19] Controls.TWinControl.DefaultHandler + $F1
[004906E1] Forms.TCustomForm.WndProc + $421
[00404FF3] System.@LStrFromPCharLen + $23
[00475780] Controls.TControl.Perform + $24
[00477BD6] Controls.TWinControl.GetControl + $32
[0047AEC7] Controls.TWinControl.CMInvalidate + $6F
[004759B0] Controls.TControl.WndProc + $188
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[004026B6] System.SysGetMem + $16A
[004EDC47] DB.TDataSet.IsLinkedTo + $2F
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[00402658] System.SysGetMem + $10C
[004026E2] System.SysGetMem + $196
[00478A1B] Controls.TWinControl.WndProc + $157
[004026B6] System.SysGetMem + $16A
[004A1770] JvExControls.TJvExCustomControl.BaseWndProc + $24
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[004026B6] System.SysGetMem + $16A
[00402891] System.SysFreeMem + $199
[00478A1B] Controls.TWinControl.WndProc + $157
[004A1FA0] JvExControls.TJvExCustomControl.WndProc + $4E4
[004A1FDC] JvExControls.TJvExCustomControl.WndProc + $520
[00404260] System.@CallDynaInst + $4
[00475780] Controls.TControl.Perform + $24
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[00402658] System.SysGetMem + $10C
[00402BAA] System.@GetMem + $A
[00404FB0] System.@NewAnsiString + $C
[00519AB0] JvDBLookup.TJvLookupControl.DataLinkRecordChanged (Line 941, "JvDBLookup.pas" + 8) + $1D
[004E96BE] DB.TDataLink.DataEvent + $72
[004F45B7] DBCtrls.TFieldDataLink.DataEvent + $F
[004E9C95] DB.TDataSource.NotifyLinkTypes + $3D
[004E9CC6] DB.TDataSource.NotifyDataLinks + $1E
[004E9CF3] DB.TDataSource.DataEvent + $23
[004EDF9C] DB.TDataSet.DataEvent + $130
[00536096] MDOCustomDataSet.TMDOCustomDataSet.WriteRecordCache (Line 3918, "MDOCustomDataSet.pas" + 5) + $19
[005344C2] MDOCustomDataSet.TMDOCustomDataSet.InternalSetFieldData (Line 3061, "MDOCustomDataSet.pas" + 53) + $8
[0053552C] MDOCustomDataSet.TMDOCustomDataSet.SetFieldData (Line 3611, "MDOCustomDataSet.pas" + 7) + $6
[004ED455] DB.TDataSet.SetFieldData + $45
[004ED4F6] DB.TDataSet.SetFieldData + $E6
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[004ED335] DB.TDataSet.GetFieldData + $45
[004ED3F7] DB.TDataSet.GetFieldData + $107
[00490732] Forms.Default + $3A
[0049095A] Forms.TCustomForm.ClientWndProc + $1D6
[0042A648] Classes.StdWndProc + $14
[004024F2] System.TryHarder + $EE
[004026BF] System.SysGetMem + $173
[00402891] System.SysFreeMem + $199
[004028B9] System.SysFreeMem + $1C1
[00402BD5] System.@FreeMem + $5
[00404EFC] System.@LStrClr + $1C
[00404FF3] System.@LStrFromPCharLen + $23
[0040508A] System.@LStrFromPWCharLen + $4E
[00402BD5] System.@FreeMem + $5
[00404EFC] System.@LStrClr + $1C
[00404FF3] System.@LStrFromPCharLen + $23
[0040508A] System.@LStrFromPWCharLen + $4E
[0047B0EB] Controls.TWinControl.GetClientRect + $F
[0042E13E] Graphics.TCanvas.Unlock + $1E
[0045BDBC] ComCtrls.TToolBar.CNNotify + $5FC
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[004026B6] System.SysGetMem + $16A
[004759B0] Controls.TControl.WndProc + $188
[004688AD] StdCtrls.TCustomEdit.DefaultHandler + $2D
[004759B0] Controls.TControl.WndProc + $188
[0040B513] SysUtils.FmtStr + $B7
[0040B39F] SysUtils.FormatBuf + $367
[0047B0EB] Controls.TWinControl.GetClientRect + $F
[0042E13E] Graphics.TCanvas.Unlock + $1E
[0045BDBC] ComCtrls.TToolBar.CNNotify + $5FC
[004759B0] Controls.TControl.WndProc + $188
[0047B0EB] Controls.TWinControl.GetClientRect + $F
[0042E13E] Graphics.TCanvas.Unlock + $1E
[0045BDBC] ComCtrls.TToolBar.CNNotify + $5FC
[00491B4F] Forms.TCustomForm.DefaultHandler + $4B
[004795D9] Controls.TWinControl.WMSetCursor + $F5
[004759B0] Controls.TControl.WndProc + $188
[00492413] Forms.TCustomForm.WMEraseBkGnd + $1B
[004759B0] Controls.TControl.WndProc + $188
[00478A1B] Controls.TWinControl.WndProc + $157
[0042E13E] Graphics.TCanvas.Unlock + $1E
[004906E1] Forms.TCustomForm.WndProc + $421
[0041FB48] Classes.TThreadList.UnlockList + $4
[004319C0] Graphics.FreeMemoryContexts + $98
[00478698] Controls.TWinControl.MainWndProc + $2C
[004786AD] Controls.TWinControl.MainWndProc + $41
[0042A648] Classes.StdWndProc + $14
[0040B397] SysUtils.FormatBuf + $35F
[0040B39F] SysUtils.FormatBuf + $367
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[004026B6] System.SysGetMem + $16A
[00402BAA] System.@GetMem + $A
[00404FB0] System.@NewAnsiString + $C
[00404FF3] System.@LStrFromPCharLen + $23
[0040B513] SysUtils.FmtStr + $B7
[004759B0] Controls.TControl.WndProc + $188
[00492413] Forms.TCustomForm.WMEraseBkGnd + $1B
[004759B0] Controls.TControl.WndProc + $188
[0042A648] Classes.StdWndProc + $14
[00478A1B] Controls.TWinControl.WndProc + $157
[004906E1] Forms.TCustomForm.WndProc + $421
[0041FB48] Classes.TThreadList.UnlockList + $4
[004319C0] Graphics.FreeMemoryContexts + $98
[00478698] Controls.TWinControl.MainWndProc + $2C
[004786AD] Controls.TWinControl.MainWndProc + $41
[0042A648] Classes.StdWndProc + $14
[00478AFF] Controls.TWinControl.DefaultHandler + $D7
[0041DF6A] Classes.Rect + $1A
[00478E07] Controls.TWinControl.PaintControls + $14B
[00478C56] Controls.TWinControl.PaintHandler + $F2
[004A0397] JvThemes.FixedWMPrintClient (Line 1862, "JvThemes.pas" + 7) + $B
[004A03A9] JvThemes.FixedWMPrintClient (Line 1866, "JvThemes.pas" + 11) + $5
[0042A648] Classes.StdWndProc + $14
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[00402658] System.SysGetMem + $10C
[004026E2] System.SysGetMem + $196
[004048F0] System.@TryFinallyExit + $10
[004026B6] System.SysGetMem + $16A
[0053BF7A] MDOSQL.TMDOXSQLVAR.SetIsNull (Line 1321, "MDOSQL.pas" + 17) + $1A
[00402BFD] System.@ReallocMem + $D
[0052B2A8] MDO.MDOAlloc (Line 331, "MDO.pas" + 1) + $4
[004028B9] System.SysFreeMem + $1C1
[0054157E] MDODatabase.TMDOTransaction.CheckInTransaction (Line 1476, "MDODatabase.pas" + 3) + $2
[00541A69] MDODatabase.TMDOTransaction.GetDatabase (Line 1643, "MDODatabase.pas" + 1) + $8
[00541517] MDODatabase.TMDOTransaction.Call (Line 1463, "MDODatabase.pas" + 6) + $0
[0053CA9F] MDOSQL.TMDOSQL.Call (Line 1932, "MDOSQL.pas" + 3) + $C
[0053CE9F] MDOSQL.TMDOSQL.ExecQuery (Line 2049, "MDOSQL.pas" + 55) + $40
[00533AE5] MDOCustomDataSet.TMDOCustomDataSet.InternalPostRecord (Line 2819, "MDOCustomDataSet.pas" + 28) + $3
[0053393B] MDOCustomDataSet.TMDOCustomDataSet.InternalPost (Line 2774, "MDOCustomDataSet.pas" + 32) + $9
[004EF401] DB.TDataSet.CheckOperation + $29
[004EDF9C] DB.TDataSet.DataEvent + $130
[004EF0B3] DB.TDataSet.Post + $47
[00534AE8] MDOCustomDataSet.TMDOCustomDataSet.Post (Line 3242, "MDOCustomDataSet.pas" + 25) + $2
[004F6E31] DBCtrls.TDBNavigator.BtnClick + $F1
[004F6C85] DBCtrls.TDBNavigator.ClickHandler + $D
[00475B48] Controls.TControl.Click + $64
[004453D8] Buttons.TSpeedButton.Click + $0
[004453C2] Buttons.TSpeedButton.MouseUp + $E2
[004F738F] DBCtrls.TNavButton.MouseUp + $17
[00475F34] Controls.TControl.DoMouseUp + $2C
[00475FA9] Controls.TControl.WMLButtonUp + $69
[00475EC6] Controls.TControl.WMMouseMove + $6E
[004759B0] Controls.TControl.WndProc + $188
[00478A1B] Controls.TWinControl.WndProc + $157
[004906E1] Forms.TCustomForm.WndProc + $421
[00490732] Forms.Default + $3A
[00475780] Controls.TControl.Perform + $24
[004982A7] Forms.TApplication.DispatchAction + $7F
[004964B3] Forms.TApplication.WndProc + $46F
[0042A648] Classes.StdWndProc + $14
[00475780] Controls.TControl.Perform + $24
[004788B2] Controls.TWinControl.IsControlMouseMsg + $82
[0047899E] Controls.TWinControl.WndProc + $DA
[00478698] Controls.TWinControl.MainWndProc + $2C
[0042A648] Classes.StdWndProc + $14
[00493A8F] Forms.TraverseClients + $4F
[004357F2] Contnrs.TComponentList.GetItems + $A
[004979FD] Forms.TApplication.StopHintTimer + $15
[00496C77] Forms.TApplication.ProcessMessage + $83
[00496CAE] Forms.TApplication.HandleMessage + $A
[00496EDE] Forms.TApplication.Run + $96
[0064FC60] MiPrograma.MiPrograma(Line 66, "" + 5) + $7

¿No recuerdas el hilo "Debuguear en tiempo de ejecución"?.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita