views:

2604

answers:

8

For many years I have used two great tools BoundsChecker & Purify, but the developers of these applications have let me down, they no longer put effort into maintaining them or developing them. We have corporate accounts with both companies, and they both tell me that they have no intention of producing versions to support 64 bit applications.

Can anyone recommend either open source or commercial alternatives that support 64 bit native C++/MFC applications?

A: 

I've used bounds checking and other dynamic analysis tools, and while the architectures are different it's the code that you're checking - in theory you could run bounds checking on any backend and the result would be the same - the code either steps outside its bounds or it does not.

The only complications are addressing more than 4GB of memory space, dealing with pieces of code you can't cross-compile to a 32-bit architecture (64 bit object files for which you have no source, etc), and general 64 bit migration issues (platform specific code such as checking for 0xFFFFFFFF instead of -1)

What other problems are you running into doing bounds checking on your program? Are you unable to compile a 32 bit version?

It's not your ideal solution, certainly, and one should always check the code they're going to run, but in this case you might not have a choice, unless you want to do your own bounds checking (which is a good idea in any case...).

Adam Davis
+1  A: 

Parasoft has a tool called Insure++ (link: http://www.parasoft.com/jsp/products/quick_facts.jsp?product=Insure) which says it'll do that.

I've used Insure++ on 32-bit and 64-bit apps on Linux and it worked okay. It sometimes got confused when it was trying to parse template/stl code and would fall over.

That url says it works on 32- and 64-bit windows, good luck!

svec
Parasoft is the kind of company where you need to be contacted to evaluate the product. No downloads :|
Sorin Sbarnea
Insure++ works though, if you have a few days to do your build, and a few hours to start up your application as well.
C Johnson
A: 

it is my understanding that BC 9.0 will support WOW64

Yes, they told me that almost 12 months ago to the day, glad I did not hold my breath.
titanae
A: 

Viva64 (http://www.viva64.com/viva64-tool/) tool provides detection of errors typical of 64-bit Windows applications. Viva64 is a lint-like static analyzer of C/C++ code. Viva64 integrates into Visual Studio 2005/2008 environment and provides user-friendly interface to test your software projects.

+1  A: 

BoundsChecker 9.01 now supports VC2008 and x64 bit, at last.

titanae
hmm, it doesn't
Meidan Alon
well it now installs on x64 machines, its a start! hopefully it will one day work with x64 code too.
titanae
I don't think they ever will.
C Johnson
+1  A: 

insure++ only workse if you instrument your code. I once tried it. It took about 5 minutes to compile about 1000 lines of code. Since the project that I needed to compile was huge, I quickly determined that Insure++ was not going to work.

Not to mention their reporting, or output from Insure++ is pretty archaic. also the runtime performance penalty was attrocious.

Note about boundschecker from numega/compuware/other_new_company: Don't buy it. It's only profiles 32 bit apps. It does NOT do 64 bit apps. It can be installed on a 64 bit OS though. I stopped using it years ago on our app. I do use it on CppUnit Tests though... sometimes.

In general I'm completely disgusted with all the native memory leak tools out there. They all don't work, or just lock up your application on shutdown.

C Johnson
A: 

Intel(R) Parallel Inspector (http://software.intel.com/en-us/intel-parallel-inspector/) is a threading and memory-checking plugin tool to Microsoft* Visual Studio; it supports 32-bit and 64-bit C/C++ on Windows. It's a commercial application with a 30-day free evaluation.

Disclosure: I work for Intel.

Jay DeSouza
A: 

FYI: BoundsChecker 10.0 runs on Windows XP through Windows 7, on both 32 and 64 bit versions. It supports WOW64 applications, and it also supports Visual Studio 2010. In fact, we released VS2010 support within 30 days of Microsoft's release.

We are catching up with our backlog. We were very late getting the VS2005 and VS2008 support out (with BC 9.0, Fall 2008), but there were a variety of reasons why this happened. The miracle was that we got it out at all.

BoundsChecker 10.1, when it comes out, should have some more goodies. Stay tuned.

Disclosure: I work for MicroFocus.

mistiano
We are now accepting beta testers for DPS 10.5. The BoundsChecker component (Error Detection) now supports X64 applications. The only X86 functions not yet supported in X64 are .NET and Deadlock Analysis.
mistiano