I have a C++ application, developed with VisualStudio 2015 (update 2).
Profiling with AMD Code XL shows that the program spends almost 20% of its time in the function RtlUpcaseUnicodeToMultiByteN
, from the module ntdll.dll
. Apparently it converts unicode tsrings to upper case.
As it makes no sense to spend that much time doing that, I need to know who is calling the function. Turns out it isn't easy.
What I'd want to do is set a breakpoint, then see the call stack. However, I cannot set it the usual way without the source code.
I tried Windbg, but the stack trace was essentially useless.
Then I found there is a way to set a "function breakpoint" in VisualStudio; but the program never did break; even though the "modules" window showed ntdll.dll
as "symbols loaded" status.
What more can I do?