When a crash occurs on Windows Client or Server Agent, use WinDbg to catch(capture) the call stack.
- Download and install WinDbg (https://go.microsoft.com/fwlink/p/?LinkId=536682); during the installation, select the 'Debugging Tools for Windows' checkbox only. You can also download an old build from http://wcbuild.gladinet.com/releases/windbg/X86-Debuggers-And-Tools-x86_en-us.msi.
- Start WinDbg as Administrator.
- Go to 'File' -> 'Symbol File Path', set symbol path to 'srv*C:\symbols*https://msdl.microsoft.com/download/symbols'. Create folder C:\symbols, to store the symbol files downloaded from Microsoft. If you have symbol files from Gladinet, add it to the end of the path. For example, 'srv*C:\symbols*https://msdl.microsoft.com/download/symbols;C:\symbols\pdb1259'
- Windows Client:
In windbg, go to File, Open Executable. Go to the windows client installation folder and select 'CoDesktopClient.exe'. Type '/child' as Arguments. Click 'Open', to launch the windows client in windbg.
- Server Agent:
In windbg, press F6, select the process 'GladGroupSvc.exe' and click 'OK'. It will attach windbg to the process.
- Type 'g' to continue. The command line field will show '*BUSY* Debuggee is running…'.
- If the windows client/server agent crashes, it will crash in WinDbg. You’ll see the command line is ready to take command, to analyze the crash.
- Type 'kb' first, then '~*kb', to get thread info. Save the output in windbg.
- In some scenarios, the application will call TerminateProcess (NTDLL) first before the crash. In that case, '~*kb' only returns one thread.
- when '~*kb' only returns one thread, need to stop windbg. Follow the above process to re-launch windbg, start the client in windbg/attach to server agent service process
- Before type 'g' to continue, run 'x kernel32!TerminateP*', to get the exact name. For example:
0:090> x kernel32!TerminateP*
776289b0 KERNEL32!TerminateProcessStub (<no parameter info>)
Run 'bp kernel32!TerminateProcessStub', to set a break point on the call 'kernel32!TerminateProcessStub'. This way, we can get all the thread information, instead of only one thread.
Run 'g' to resume the process. When it crashes, run 'kb' and '~*kb' and save the windbg output.
- Type '.dump /ma c:\temp\crash.dmp', to create dump. The dump file will be created under c:\temp. If the folder doesn't exist, please change the path. Zip the dump file and keep it, in case we need to retrieve more info from the dump.
- Now you can close windbg.
- Send the saved output and the dump file to Gladinet support.