When Windows Client or Server Agent is slow, use WinDbg to catch thread info:
- 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:
- for windows client, start WinDbg as regular user
- for server agent, start WinDbg as Administrator
- Contact Support (email@example.com) with the Desktop Client version to send you the Symbol files corresponding to the Client installed.
- Create a local folder C:\symbols, to store the symbol files downloaded from Microsoft (symbols from the Client can also be saved on this folder).
- From th WindDbg go to 'File' -> 'Symbol File Path', set symbol path to 'srv*C:\symbols*https://msdl.microsoft.com/download/symbols;C:\symbols\pdb1234' (the last part corresponds to the folder the Client's Symbols are saved)
- 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.
When start Windows Client like this, do NOT start WinDbg as administrator first.
- Server Agent:
Go to Windows Services, find Cloud Server Agent Access Service, right-click and go to Properties, open the Log On tab, here enable 'Allow service to interact with desktop' (disable this after collecting the traces). Press OK.
In WinDbg, press F6, select the process 'GladGroupSvc.exe' and click 'OK'. It will attach WinDbg to the process.
- On WinDbg command input line, run 'x kernel32!TerminateP*'. It returns the exact name of the TerminateProcess function. For example:
0:090> x kernel32!TerminateP*
776289b0 KERNEL32!TerminateProcessStub (<no parameter info>)
Here, the function name is 'KERNEL32!TerminateProcessStub'
Run 'bp kernel32!TerminateProcessStub', to set a breakpoint on the call 'kernel32!TerminateProcessStub'. This way, we can get all the thread information, instead of only one thread.
In some machines, the function returned via x is 'KERNEL32!TerminateProcess'. In that case, set the breakpoint for the function via 'bp KERNEL32!TerminateProcess'
- Type 'g' to continue. The command line field will show '*BUSY* Debuggee is running…'.
- Run the operation which causes the application to be slow.
- When the system is slow, go to Windbg and select 'Debug' -> 'Break', to break in.
- If you are running 64-bit Windbg, run '!wow64exts.sw' first
- Type 'kb' then '~*kb' and then '!analyze -v' to get thread info. Save the 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.
- Click 'Debug' -> 'Detach Debuggee', to detach WinDbg.
- Send the saved output to Gladinet support.