Sample code for 30+ languages & platforms
PowerBuilder

Using DebugLogFilePath to Debug a Crash

If a crash is suspected to occur within a Chilkat method call, it can be debugged using the VerboseLogging and DebugLogFilePath as shown here.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Crypt

li_Success = 0

// If a crash is suspected to occur within a Chilkat method call, it can be debugged using the VerboseLogging and DebugLogFilePath as shown here.
// 
// NOTE: The same technique applies for any Chilkat class that has the DebugLogFilePath property.
// Most Chilkat classes have DebugLogFilePath.

loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
if li_rc < 0 then
    destroy loo_Crypt
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// First make sure VerboseLogging is turned on.
loo_Crypt.VerboseLogging = 1

// Set the DebugLogFilePath to the path of a log file that will be created automatically.
// If the file already exists, Chilkat will append to it.
loo_Crypt.DebugLogFilePath = "c:/someDir/debugLog.txt"

// Reproduce the problem.

// ...
li_Success = loo_Crypt.VerifyP7M("c:/someDir/someFile.p7m")
// ...

// If a crash occurred within Chilkat, then the debugLog.txt will contain information that
// can be sent to support@chilkatsoft.com

// ------------------------------------------------------------------------------------------------
// Note: Given that the debug log file is always appended, the log file might grow 
// to a very large size.  You can prevent the continual growth of the log file by
// deleting the log file at certain points, such as after a Chilkat method returns.
// 
// Given that we're only interested in the log file for Chilkat calls that crash or hang,
// it's OK to delete the log file after a Chilkat method that returns.
// 
// The next call to a Chilkat method will re-create the log file.  If the Chilkat call crashes
// or hangs, then you'll be left with just the log of the crash or hang.
// ------------------------------------------------------------------------------------------------


destroy loo_Crypt