Coder Social home page Coder Social logo

rudjigames / mtuner Goto Github PK

View Code? Open in Web Editor NEW
2.6K 72.0 144.0 6.66 MB

MTuner is a C/C++ memory profiler and memory leak finder for Windows, PlayStation 4 and 3, Android and other platforms

License: BSD 2-Clause "Simplified" License

Lua 0.26% Makefile 0.57% C++ 96.43% C 0.61% Batchfile 1.14% QMake 1.00%
profiling memory-profiler memory-leak-finder memory optimization tool performance-analysis playstation3 playstation4

mtuner's Introduction

MTuner logo

Build status License

MTuner is a C/C++ memory profiler and memory leak finder for Windows, PlayStation 4 and 3, Android and other platforms.

MTuner utilizes a novel approach to memory profiling and analysis, keeping entire time-based history of memory operations. This gives an unique insight in memory related behavior of your software by making queries over the entire data set.

While MTuner was created for profiling C/C++ applications, it is possible to profile memory for programs written in other languages as long as there is corresponding debug symbol information. Users can convert DMD CodeView/DWARF debug symbols to PDB format using cv2pdb.

MTuner screenshot

Source Code

You can get the latest source code by cloning it from github:

git clone https://github.com/RudjiGames/MTuner.git

After cloning, we need to download dependencies:

git submodule init
git submodule update

Download

Binaries can be downloaded from releases page

NB: If your application crashes while being profiled with MTuner, you can try adding MTuner folder to 'Exclusions' list under 'Virus & threat protection settings'

Documentation

MTuner documentation can be found here.

Build

MTuner uses Qt framework for user interface so it needs to be installed on the build machine. The build system is based on GENie and build in order to dramatically simplify managing build configurations and dependencies.

After cloning the repository and dependencies, here are the steps to build MTuner.

MinGW

$ cd MTuner/genie
$ genie --gcc=mingw-gcc gmake
$ cd ../../.build/windows/mingw-gcc/MTuner/projects/
$ make

MINGW environment variable must be set and point to the MinGW installation directory.
Tested with TDM64 MinGW using OpenMP package

Visual Studio

> cd MTuner/genie
> genie vs2022

Solution will be located here: {Clone root}/.build/windows/vs2022/projects/MTuner/MTuner.sln

NB: building Qt based projects with build requires Lua to be installed.

Environment variables are used to locate Qt installation, example:

set QTDIR_VS2022_x86=C:\<some_path>\Qt\6.3.1\msvc2019_64 *
set QTDIR_VS2022_x64=C:\<some_path>\Qt\6.3.1\msvc2019_64

* Note that Qt deprecated 32bit builds which is why both variables point to same location.

License (BSD 2-clause)

Copyright 2023 Milos Tosic. All rights reserved.

https://github.com/RudjiGames/MTuner

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

   1. Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.

   2. Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

mtuner's People

Contributors

dragonmux avatar ebatut-alg avatar kurimo avatar maksqwe avatar marcelpetrick avatar milostosic avatar vannussina avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mtuner's Issues

non-leaf frames on Windows show off-by-one source/line

the non-leaf frames on Windows are often off-by-one when looking at the reported source/line. See the following screenshot for an example:

off-by-one-callstack

Note how the call stack tree shows the function countWords, but the source view shows the line after that. The issue is probably that the calling function pushes the return address on the stack, and you'll need to account for that when looking for the call location.

Attempting to compile

Apologies if this is a very naive question but when I try to build the solution from command line I switch to the current directory and get a: 'genie' is not recognized as an internal or external command, operable program or batch file. error

Looks like the only 2 files in that folder are genie.lua and MTuner.lua

Is there something I'm missing?

thanks

Only "Unknown" entries in call stacks

I just tried MTuner on a sample Visual Studio project, with all default settings (including /ZI debug information).
Unfortunately I get only "Unknown" Names in Call Stack Tree and "Unknown" Files and Lines 0 in Stack trace window.

The .pdb file is found, I think, because MTuner locks the .pdb file, so that it's not writable.
I also tried using my own symbol server - no difference.

I thought it might be some problem with using VS 2017, so I tried with VS 2015, but same problem.

Fail to build on linux

Hello !
Following the instructions I get this output:

genie --file=genie/genie.lua --gcc=linux-gcc gmake
./MTuner/genie/genie.lua:14: attempt to call a nil value (global 'setPlatforms')
stack traceback:
	./MTuner/genie/genie.lua:14: in main chunk
	[C]: in upvalue 'builtin_dofile'
	[string "premake = { }..."]:109: in function 'dofile'
	[string "_WORKING_DIR        = os.getcwd()..."]:37: in function '_premake_main'

Cheers !

SDK directory is missing a file

The SDK directory in the MTuner binary releases is missing the src/rmem_get_module_info.cpp file. I had to grab it from the rmem source so I could build with the SDK.

Console is not shown

Profiling a command line application on Windows does not show a console. MTuner 4.3.1

default app icon

Hi,

Please, add application icon for MTuner.exe to nicely looking in windows 10 start menu box or explorer :-)

PS4 captures do not have any module info and cause the GUI to assert when loaded

Hi

I am integrating the rmem files in my PS4 project, calling rmemInit, rmemAllocAligned, rmemFree and rmemShutDown in my runtime, and getting seemingly correct capture files.

When I try to load these capture files in the MTuner GUI, the parsing of the capture completes successfully and the rtm::Capture::LoadResult res = ctx->m_capture->loadBin(fn.c_str()); statement in mtuner.cpp at line 790 returns with rtm::Capture::LoadSuccess.

A few lines later, during the toolchain setup (setupLoaderToolchain(ctx, _file, m_gccSetup, m_fileDialog, this, symStore); at line 801), the ELF file is located, and the toolchain checked (the PS4 toolchain is correctly found on my machine). At the end of the function, line 130, _context->setToolchain(tc); is called. In CaptureContext::setToolchain(), the toolchain is a GCC variant, so nothing special is done in the switch statement. Then, line 67 in capturecontext.cpp, symbol resolver creation is attempted (m_symbolResolver = rdebug::symbolResolverCreate( m_capture->getModuleInfos().data(), (uint32_t)m_capture->getModuleInfos().size(), &_tc);). As my capture has no module info whatsoever, m_capture->m_moduleInfos is emtpy, the first assert at the beginning of rdebug::symbolResolverCreate() fires, because _moduleInfos is NULL.

I looked at the capture parsing code (capture.cpp), and as far as I can tell, module info is either added (via addModule) when symbols are loaded early in the capture parsing code (if (!loadSymbolInfo(loader, fileSize)), line 324 in capture.cpp), or when rmem::LogMarkers::Module markers are found when parsing the capture. First case does not happen with my capture because symbolInfoSize is 0 (getSymbolInfo() is only implemented for Windows and X360 platforms), and second case does not happen either because I am not calling rmemAddModuleC|W() in my runtime.

So my question is: what am I missing :) Should I try to get the module's name/base/size from the PS4 runtime and manually add it to the capture, or should there be some kind of "this is a platform where it is likely module info will be absent, module info should be directly populated with the EXE/ELF name by default" bypass (in which case base address and size are still missing I guess)?

Thanks for your help!

No function names

I have a .pdb file generated by cv2pdb, _NT_SYMBOL_PATH pointing to the directory with .exe and .pdb, the checkbox for _NT_SYMBOL_PAT under Settings/Debug symbols is also on.

grafik

Symbols / Source code not showing in MinGW 64 application

I have tried to debug a minGW 64 (7.3.0) application to have an idea where memory is more allocated but for some reason the source code does not show up:

image

I compiled the application with minGW and debug symbols activated (DWARF information), using the flags (qmake):
QMAKE_CXXFLAGS += -gdwarf-2
CONFIG += force_debug_info

This works correctly for VTune, but for MTuner for some reason does not seem to work.

I have also setup the MinGW toolchain and it looks like this:

image

I am not sure what I am missing or doing wrong.

Can you give some help, most of the issues here are for VC++ so not helpful for minGW.

P.S. I am using a release executable (-O2), MTuner version is 4.3.5, the MinGW toolchain is the one that comes with Qt 5.12.3.

Capture file was only partially loaded!

I am using MTuner 4.0.9 (your build) on Win7, x64 against a bigger 32 bit-application. Got it configured and running, then after quitting the application-under-test, the profiled data is analysed and I get the following message-box:


Capture loaded partially!

Capture file was only partially loaded!
Information may be missing from the profile!

OK

After confirmation MTuner crashes. After restarting MTuner and loading the stored profile, it crashes repeatedly. What can I use as workaround?

I've notice that profiling smaller apps works fine, but not with that which actually needs the profiling.
Thank you very much for the tool and the great work! :)

feedback on readme and build instructions

Hi,

I'm trying to build this project since the release version does not work for me - it always hangs (main thread) on finishing the capture (presumably on symbolicating or compression ). Also can't load the capture trace file separately. Without symbols in the release it is hard to tell what is going on. Maybe you should offer them as separate downloads like other projects do. But anyway, that is another story and I might file a separate issue on that if I succeed.

Regarding improving usage instructions. I would mention:

  • which versions of Windows it works on
  • which compiler and versions has it been tested on

Regarding improving build instructions. I would mention more Qt related infos:

  • what are the tested / recommend versions of Qt
  • clarify if the open source version enough

Then on build you rely on your build scripts collection from https://github.com/milostosic/build.git
but you do not mention that I need the following prerequisites:

  • genie (which version)
  • lua (which version)
  • lua lfs module
  • setup some additional environment variables for Qt, i.e.
    set QTDIR_VS2015_x86=C:\<some_path>\Qt\5.10.0\msvc2015_64 *
    set QTDIR_VS2015_x64=C:\<some_path>\Qt\5.10.0\msvc2015_64

*) Newer Qt versions do not seem to support x86 anymore, so ignore this - maybe I should be able to choose that in the genie call though?

Again, I don't think you need to explain everything (although it would be better) but at least mention those things. Nothing ruins an experience more than not working build instructions.
Other than that, great work. Can't wait to use it. The UI seems promising.

sorting by #allocations breaks call stack tree

sorting the data by number of allocations breaks the call stack tree completely, see attached screenshot:

sort_broken

the frame void Worker::loadInput(void) has 1007016 inclusive allocations, but expanding it shows only items with very few allocations. Further down a frame for QCommandLineParser::QCommandLineParser has one internal allocation, but expanding it shows a completely unrelated frame from the Worker::parseFile with 1007012 allocations - those should be part of the loadInput frame above.

Qt License Information is wrong

On the Open source license page it states:

Qt (LGPL)

Qt - Cross-platform application and UI framework.

https://qt-project.org/

Qt is available under the LGPL (version 2.1).
The Qt Toolkit is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies) and other contributors.

The current release of MTuner 3.6.8 links against Qt 5.7.0 which does not actually have an LGPL 2.1 license for the Qt Modules being used[core, gui, network, widgets]. (Qt 5.6.x was the last to offer this version of LGPL). Current licenses available for Qt 5.7 and up are here:
https://www.qt.io/licensing-comparison/

Also current Copyright company is: The Qt Company Ltd. instead of Digia Plc (you can see this in the current license headers).

How to use on PS4

Hello, is there any documentation on how to use this with a PS4 Console ?

One single unknown module, all others are fine

Hi, we have a software that loads some internal windows DLL files, which don't have the .dll extension (.dlg). Just a naming convention.

I've noticed however those DLL don't appear in MTuner "Modules" list. Also, the calls that are supposed to be made from within that file are tagged as "Unknown" in the stack trace.

So, I assume there is some kind of filtering based on the file extensions (.exe, .dll, etc.). Is that correct ? How could I add our custom extensions ?

thanks !

Allocation stack trace in timeline range

Hi, I post it here as I don't know where to put it elsewhere.
I cannot find a way to see allocation calls happening during a specific time range of the timeline, is it possible ? If not, that could be really a big improvements to track leaks by just observing the timeline and spotting the relative source code when allocations seem to grow when they shouldn't.

32/64-bit detection for MTunerInject misjudges .net executables

Running a 64-bit .net (managed) executable from the MTuner Project manager screen gives an error: "Failed to launch [path]". It uses MTunerInject32.exe which then obviously doesn't work.

Reproduce:

  • This happens for example with Paint.net (Failed to launch C:\Program Files\paint.net\PaintDotNet.exe).
  • You can also create a simple C# project and uncheck Prefer 32-bit under Build in the project settings.

Workaround: Renaming MTunerInject64.exe to MTunerInject32.exe works as expected.

Maybe the issue is actually in rdebug::processIs64bitBinary.

inline frames are not shown on Windows

when one profiles an optimized binary with MTuner, the result is hard to interpret since inline frames are not shown. Take this example:

void myfunc()
{
    for (int i = 0; i < 100000; ++i) {
        new char;
    }
}

int main()
{
    myfunc();
    return 0;
}

Put it into a file test.cpp then compile it with cl.exe /O2 /Zi test.cpp and trace it with MTuner. The result looks like this:

inlines_missing

This basically makes MTuner unusable on optimized C++ code bases on Windows

usage from command line broken

I'm trying to use MTuner from the command line and it doesn't seem to be doing anything:

C:\Qt\src\training-material\addon\profiling\ex_string_comparison\build (master -> origin)
λ MTuner -p .\release\ex_string_comparison.exe
Copyright (c) 2017 by Milos Tosic. All rights reserved.

C:\Qt\src\training-material\addon\profiling\ex_string_comparison\build (master -> origin)
λ ls -latr
total 60
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 ../
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 debug/
-rw-r--r-- 1 milian 197121 15558 Nov 27 19:04 Makefile.Release
-rw-r--r-- 1 milian 197121 14991 Nov 27 19:04 Makefile.Debug
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 ./
-rw-r--r-- 1 milian 197121 14364 Nov 27 19:04 Makefile
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 release/

C:\Qt\src\training-material\addon\profiling\ex_string_comparison\build (master -> origin)
λ MTuner -p .\release\ex_string_comparison.exe -o mtuner.out
Copyright (c) 2017 by Milos Tosic. All rights reserved.

C:\Qt\src\training-material\addon\profiling\ex_string_comparison\build (master -> origin)
λ ls
Makefile  Makefile.Debug  Makefile.Release  debug/  release/

C:\Qt\src\training-material\addon\profiling\ex_string_comparison\build (master -> origin)
λ ls -latr
total 60
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 ../
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 debug/
-rw-r--r-- 1 milian 197121 15558 Nov 27 19:04 Makefile.Release
-rw-r--r-- 1 milian 197121 14991 Nov 27 19:04 Makefile.Debug
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 ./
-rw-r--r-- 1 milian 197121 14364 Nov 27 19:04 Makefile
drwxr-xr-x 1 milian 197121     0 Nov 27 19:04 release/

No error is being reported, but also no data file gets recorded as far as I can see. Please make this easier to use from the command line:

  • show an error if something fails
  • show where the data got recorded to

Thanks

Support additional memory allocators

It would be nice if additional memory allocators are supported. For example:
CoTaskMemAlloc / CoTaskMemFree
SysAllocString / SysAllocFree
LocalAlloc / LocalFree

No Call Stack Tree since v4.0.2

Used on Windows 10, I haven't information (empty window) into the 'Call Stack Tree' and 'Stack Trace' tabs.
Working with the v4.0.1 but not on all release after this.

Tested with a simple code :

#include <iostream>
#include <Windows.h>

using namespace std;

int offset = 0;
char *buffer[10];

void do_allocation (void)
{
  std::cout << "alloc" << std::endl;

  buffer[offset] = (char*) malloc (50000000*sizeof(char));

  if (buffer[offset] == NULL)
  {
    offset++;
  }
}

int main()
{
  cout << "Hello World!" << endl;

  buffer[0] = (char*) malloc (10000000*sizeof(char));
  buffer[1] = (char*) malloc (30000000*sizeof(char));

  for (uint8_t i=2; i<10; i++)
  {
    do_allocation ();
    Sleep (100);
  }

  for (int i=0; i<offset;i++)
  {
    free(buffer[i]);
  }

  return 0;
}

Build information :

  • Visual Studio 2015 32bit
  • Same settings (pdb,...) during all tests (v4.0.1, v4.0.2,...)

Question about the stars on this repository

I just noticed that this repository appeared on "GitHub C++ Trending". I am looking at the star history:
http://www.timqian.com/star-history/#milostosic/MTuner

It looks like the repository debuted on August 23 with 150 stars, then got another 200 on August 24, and then on August 25th it received over 250 stars.

I'm wondering, how is this possible? Is MTuner being promoted elsewhere? How did so many people find out about this repository and give it a star in just 3 days? I would like to promote my own Boost C++ library, called Beast, which implements HTTP and WebSocket:
https://github.com/boostorg/beast

By the way your application looks beautiful, I am trying it out now - very helpful!

Thanks

partially loaded

Hi, I've got some issue with the trace file being partially loaded...
It's a pretty big one (9.4 GB). Any idea how I could avoid that error ?
Thanks a lot !

merging of stack frames not always successful

Take this example code:

#include <string>

void myfunc()
{
    for (int i = 0; i < 100000; ++i) {
        std::string s1("this is a very very long string this is a very long string this is a very long string");
        std::string s2("another one: this is a very very long string this is a very long string this is a very long string");
    }
}

int main()
{
    myfunc();
    return 0;
}

Compile it with cl.exe /Zi test.cpp and trace it with MTuner. Then inspect the stack tree and notice how seemingly equivalent stack frames are not merged. Maybe it's because the instruction pointer address is used for the merging, instead of the user-visible symbol name?

non-unique

'Call stack tree' and 'stack trace' tabs are empty in 4.3.1

Hi,

I have been testing the leak detection capabilities of MTuner to integrate it in the Wazuh testing protocol and I saw that the call stack tree and stack trace tabs are empty in MTuner 4.3.1.

image

image

The test is running with the following code:

#include <windows.h>
#include <stdio.h>

int main(int argc, char** argv) {
  char * a = malloc(3333);
  char * b = malloc(1234); //  Unreferenced memory
  char * c = malloc(4444); //  Still referenced
  char * d = malloc(1385);
  char * e = malloc(2385);

  b = a;

  free(a);
  free(d);

  return 0;
}

However, after reading the issue #37, I tried 4.0.9 and everything worked as expected.

image

image

On the other hand, I can't differentiate the leaks due to unreferenced memory from the leaks still referenced. Is there a way?

Best regards,
Cristobal Lopez.

find temporary allocations

In heaptrack on Linux I report temporary allocations based on a simple heuristic: Any allocation that is directly followed by its own deallocation - i.e. without any other (de)allocation happening in-between, is considered to be temporary. This, while simplistic, catches many glaring issues in applications where a simple buffer reuse can often bring tremendous performance gains. I suspect adding this metric to MTuner should be as easy as it was for heaptrack, and I know it's very useful there. I'd like to see it available on Windows and MTuner, too.

Project disappears after clicking Run

  1. In Settings > Manage projects I chose executable and click Add.
    The executable appears on the list.
  2. Then I click Run - sometimes MTuner crashes here (I had it the first few times, but I cannot reproduce any more).
  3. After Run I go to Settings > Manage projects again, and the list is empty.

When in Settings > Manage projects I don't click Run, but OK, and then go to Settings > Manage projects again and click Run the project does not disappear any more.

In case of crashes I mentioned in point 2: after starting MTuner again the list of projects is empty (every time I had 2 projects before crash).

How to change the location of the .Mtuner?

Under window10, the .MTuner is created in the location "C:\Users\xxx\AppData\Roaming\MTuner", but my c drive has no enough space to store the big .MTuner file, so anybody know how to change the location of .MTuner?
Thanks~ everyone

Compiling on Linux

seems interesting, one thing though, how difficult would it be to compile for Linux?

Command line parameters mixed up

I'm trying to run MTuner from command line; the application expects to receive command-line parameter -exe or /exe.
Attempt 1:

mtuner -p wfsp.exe -c "/exe"

Result:
Unrecognized argument: "\exe"
Attempt 2:

mtuner -p wfsp.exe -c "-exe"

Result:
No arguments passed.

Adding or removing quotes does not change the outcome. This is on Windows 2012 R2.

Command line argument length issue

During the integration this tool into my tool-chain I faced the following problem.
I would like to profile an application which has large amount of parameters with long paths. (the length of the parameters are ~1100 characters)
If I try to do this, the MTuner.com application crashes with the following error:

This application failed to start because it could not find or load the Qt platform plugin "windows" in "".

I have played a bit with the parameter length and it turned out that the application crashes only when the command line parameter length exceeds 194 characters.
e.g.:
"mtuner.com" -p "c:\MinGW\bin\gcc.exe" -c "c:\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\SomeFolder\Som.c"

I used the 4.0.8 version of the application.

I would be thankful for any kind of solution.

Windows 10 - "Virus scan failed" or "Virus detected"

Experienced:

I attempted to download the mtuner64.msi with Chrome Version 60.0.3112.90 (Official Build) (64-bit) on Windows 10 with windows defender installed.

Chrome/Windows/Defender blocked the download with the following error message.

image

"Virus scan failed" or "Virus detected"

Expected

The install file not to detect the install files as a virus.

Symbols don't seem to apply

Using latest release v4.0.7 on Win7 x64 (tried more than one PC)

I'm setting local store with path to output files from my build server

Opening previously recorded or recording new session

Call stack window is empty... Symbols don't seem to apply :/

What am I doing wrong ?

Binaries for 32 bit Windows OS

In the documentation I see

MTuner binaries can be downloaded from releases page

but I can find 64 bit packages only.

Would it be possible to provide binaries for 32 bit Windows OS?

Thanks in advance.

MTuner keeps exe locked

After profiling, MTuner keeps a lock on the executable. This prevents a rapid test cycle because you have to close MTuner everytime you want to recompile.

Would it be possible to release the file lock after profiling is done?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.