Profiling application under Wine

Chambers, Matthew matt.chambers42 at gmail.com
Mon Jul 1 08:21:05 CDT 2019


To use this I would have to self-host mono, right? I'm currently just relying on the compiler to add the .NET build-up/tear-down.

I was finally able to get VsPerfCollectionTools working for trace mode under wine, but not sampling mode. It required using vsinstr to 
instrument the binary, and I had to be careful about which functions I allowed to be instrumented. It seems if I let it instrument any .NET 
functions (with funcspecs like "my.nested.namespace.*" instead of "my::nested::namespace::*"), it would crash. But I was at least able to 
instrument C++ functions.

Thanks for all the suggestions though everyone!
-Matt


On 7/1/2019 4:49 AM, Hin-Tak Leung wrote:
> This is the relevant part of the documentation. So presumably you can do MONO_ENV_OPTIONS="--profile" and 
> MONO_ENV_OPTIONS="--profile=stuff" , I believe.
>
> ===
>
> DEVELOPMENT OPTIONS
> ...
> --profile[=profiler[:profiler_args]]
> Loads a profiler module with the given arguments. For more information, see the PROFILING section. This option can be used multiple times; 
> each time will load an
> additional profiler module.
>
> ENVIRONMENT VARIABLES
> ...
> MONO_ENV_OPTIONS
> This environment variable allows you to pass command line arguments to a Mono process through the environment. This is useful for example 
> to force all of your
> Mono processes to use LLVM or SGEN without having to modify any launch scripts.
> ===
>
> On Friday, 28 June 2019, 19:09:22 BST, Vincent Povirk <madewokdev at gmail.com> wrote:
>
>
> The WINE_MONO_* variables are just the ones we've added. Other MONO_* variables should generally work the same as in regular Mono. I 
> haven't worked with Mono's profiling tools so I can't give any further advice.
>
> On Fri, Jun 28, 2019, 11:18 AM Hin-Tak Leung <htl10 at users.sourceforge.net <mailto:htl10 at users.sourceforge.net>> wrote:
>
>     Hmm, I think wine-mono has been working in 64-bit mode for a while - although you have to invoke wine explicitly as wine64 to hook
>     into it . I think there are some quirks about how wine and wine-mono interacts, in such a way that you cannot do 32-bit + 64-bit
>     switches within the process - i.e. you must do 64-bit wine to get at 64-bit wine-mono.
>
>     Do you notice any performance difference between using wine-mono and dotnet472 64-bit ?
>
>     I am going back to wine-mono for your issue, as mono supports setting profiling option via environment variables (catering for exactly
>     this use case, when mono is running embedded inside another process), and you can set WINE_MONO_* variables to pass those along. I am
>     not sure about the exact details so you'll need to look up the relevant docs, but I know this is possible - mono has a built-in
>     profiler, and it is accessible and turned on via environment variables.
>
>     --------------------------------------------
>     On Tue, 25/6/19, Chambers, Matthew <matt.chambers42 at gmail.com <mailto:matt.chambers42 at gmail.com>> wrote:
>
>      The application requires
>      dotnet472 and 64-bit at that. I actually had to add that
>      verb to winetricks to get our application to work. I'm
>      definitely getting varying mileage! My
>      question is how to profile it with Windows symbols so I can
>      understand why and either help fix it in
>      Wine or possibly avoid the problem from my
>      application code.
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20190701/ec1d7148/attachment.html>


More information about the wine-devel mailing list