This is the first time I use .NET memory profiler.
I'm trying to use it to profile a .NET 4.5 application running on a windows 7 embedded device.
Then when trying to start the NmpCore utility to collect snapshot I get the following error just after the version and copyright information:
"failed to start NmpCoreImpl.exe process"
I tried on 2 computers (one with win10 and one in win7) and NmpCore was running fine on these.
How can I use NmpCore on the embedded device?
Note: the computers are 64bits and the embedded device is 32bit. Could it be the issue?
I don't think so: I saw that NmpCore is the same in 32bit and 64bit packages
I also tried with an older 4.6 version and result is the same.
In this case I got an error on startup:
"There is no disk in the drive. Please insert a disk into Drive \Device\Harddisk\DR1".
On this error I can hit continue twice and after that application starts.
But for the moment it didn't finish starting, it looks like it's hanging...
I hope we will be able to retrieve useful information now.
I just tested NmpCore on a freshly installed Window 7 (32-bit) and it worked OK. I'm not sure why starting NmpCoreImpl should access "\Device\Harddisk\DR1", but we will take a look at the startup code to see if we can come up with an explanation.
Since you are running Windows 7 Embedded, there's a risk that some required component is not available. Does your embedded configuration include the full Windows OS, or have you stripped away some components?
SciTech Software AB
Some components have been stripped away and some policies enforced to restrict software execution.
About the policy issues I should have avoided them by launching from a specific directory on our OS, however I still had the issue so maybe it is a missing component as you suggest.
If there is a way to get this from your software I could get you some debug logs from my runs to help you understand.
Also could you tell if you have dependencies to specific windows components? that may help us finding a way to make it work on our release OS.
For the moment I try using the debug OS anyway, hoping that we will reproduce our memory leak.
About the \Harddisk\ related errors, note that I didn't have the errors when I attached to our already running process.
I believe that the \Harddisk\ related errors may be related to the fact that the profiler tries to locate debug symbol files for loaded assemblies. It's pretty common that the PDB-files for 3rd party assemblies and Microsoft assemblies are located on a different hard-drive (e.g. F:). The profiler tries to locate the files from this hard-drive, and usually just fails silently. However, if the drive is somehow configured as a removable drive on your system, then you may get the "Please insert disk" message. This is something we have tried to avoid previously, but we failed to come up with a good solution. At least we should probably add an option to not look up debug symbols.
However, after you cancel the "Please insert disk" messages, the profiler should work correctly. Unfortunately, the logging in NmpCore is limited, so I'm not sure that the logs will provide much information. But, you can create log-files by providing the argument /log:c:\MemProfilerLogs to NmpCore. This will create a set of log-files in the c:\MemProfilerLogs directory.
SciTech Software AB
Users browsing this forum: No registered users and 29 guests