dah328
14 years agoNew Contributor
Running allocation profiler on mixed C++/C# service
I am a licensed user of AQ Time Pro 6/7 and I'm having lots of trouble running the allocation profiler against a Windows service that is written in C++ but uses several C# libraries. I need to track some excessive memory usage that I am experiencing. I have run through the troubleshooter pages on your website, but none of them have helped.
First, I am finding it difficult to get managed symbols to show up among the profiler's allocation results. I always attach the profiler to my running service because the service always crashes if I attempt to start it under AQ Time. It appears that I can get managed results only if I can manage to attach AQ Time to the service's process before the service loads its managed DLLs. This can be difficult because the service begins processing immediately and automatically loads the necessary DLLs. Shouldn't AQ Time be able to pick up the modules used by a process whether or not they have already been loaded at the time of attachment?
Second, I cannot get the allocation profiler to run while collecting any kind of stack information (lines, routines, etc.). This means that I can get counts and sizes of objects in memory, but I cannot trace them to their respective points of creation. How can I get the allocation profiler to collect stack information.
I have tried all the variations of settings that I could deduce from the questions in the troubleshooter including enabling/disabling the extended profiler for managed code, creating a profile area that includes only a small subset of the modules in my application, selecting Win32 or CLR threads, disabling "Check memory bounds", "Fill released memory blocks", and "Check system memory allocations". I have tried all of the previous steps in AQ Time 6.5, 7.1, and 7.2 with no success.
Any help would be appreciated.
Dan
First, I am finding it difficult to get managed symbols to show up among the profiler's allocation results. I always attach the profiler to my running service because the service always crashes if I attempt to start it under AQ Time. It appears that I can get managed results only if I can manage to attach AQ Time to the service's process before the service loads its managed DLLs. This can be difficult because the service begins processing immediately and automatically loads the necessary DLLs. Shouldn't AQ Time be able to pick up the modules used by a process whether or not they have already been loaded at the time of attachment?
Second, I cannot get the allocation profiler to run while collecting any kind of stack information (lines, routines, etc.). This means that I can get counts and sizes of objects in memory, but I cannot trace them to their respective points of creation. How can I get the allocation profiler to collect stack information.
I have tried all the variations of settings that I could deduce from the questions in the troubleshooter including enabling/disabling the extended profiler for managed code, creating a profile area that includes only a small subset of the modules in my application, selecting Win32 or CLR threads, disabling "Check memory bounds", "Fill released memory blocks", and "Check system memory allocations". I have tried all of the previous steps in AQ Time 6.5, 7.1, and 7.2 with no success.
Any help would be appreciated.
Dan