Profile and Checked libraries

I created a couple of new build configurations in VS2010, one that links with the PROFILE libraries (PhysX3PROFILE_x86.lib, etc…), and one that links with the CHECKED ones.

Can anyone tell me how these binaries are different and how to use them correctly? I haven’t noticed any difference. I guess I expected the Profile build to output more data to PVD and the Checked build to write out errors/warnings to a log file or something.

I haven’t found any help in the documentation yet, so any info is greatly appreciated! :) Thanks!

Right from the docs:

  • the checked build contains code to detect invalid parameters, API race conditions, and other incorrect uses of the API which might otherwise cause mysterious crashes or failures in simulation.
  • the profile build omits the checks, but still has PVD and memory instrumentation.

Thanks for the reply. I had a hunch this is how they were supposed to work, but it still wasn’t completely clear to me. We recently updated from 3.1, which had PVD support in Release (3.2 doesn’t). And I saw that PX_CHECKED is defined in Debug, so my confusion was finding the concrete/discernible differences, and how to use them.

Another thing that confused me was the lack of errors being reported in our Checked build. I assumed there would be more output (debug and whatnot) from the error callback. It wasn’t until I deliberately forced a known error that I realized the checks were in place (we must not be doing anything overtly offensive in physx).

So after sifting through docs, release notes, and header files some more, I’m understanding the subtle differences better. I’m sure there’s more going on internally, but here’s my take on them. Please correct me if I’m wrong.

  • Debug: _DEBUG defined, PVD support, advanced error checks.
  • Release: NDEBUG defined, no PVD support, no advanced error checks.
  • Checked: NDEBUG defined, PVD support, advanced error checks.
  • Profile: NDEBUG defined, PVD support, no advanced error checks.


I think that covers it. Profile does not contain the checks because they can be expensive and change the profile. Hence separate checked and profile builds.