Boost 的堆栈跟踪库不适用于C++ CLI



我一直在使用Boost堆栈跟踪库来打印我的程序的堆栈跟踪。

提高1.78.0

当用纯c++编译时,它编译和我的程序打印堆栈跟踪很好。但是,当用c++/CLI编译时,我的程序不打印堆栈跟踪。

下面是我的可复制示例:

#include <boost/stacktrace.hpp>
#include <sstream>
#include <iostream>
#include <string>
int main() {
std::stringstream stack;
stack << boost::stacktrace::stacktrace();
std::string stacktrace = stack.str();      // The string "stacktrace" is empty when running with C++ CLI
std::cout << stacktrace;
}

用c++/CLI编译不会将堆栈跟踪打印到stdout,而用纯c++编译会将其打印到stdout。

另一件事是,当我使用boost/stacktrace/stacktrace.hpp而不是boost/stacktrace.hpp时,我的程序即使在纯c++中也无法打印堆栈跟踪。

不幸的是,我找不到任何关于堆栈溢出问题的参考。

我在Windows上,我使用的是Visual Studio 2022。

我使用的是Boost版本版本:1.78.0.

使用vcpkg安装boost

谢谢

我不认为Boost Stacktrace声称支持CLR。

我希望有一些输出,但不是特别有用的输出。

当然,在CLR模式下,你可以使用。net stacktraces: https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace?view=net-6.0

另一件事是,当我使用boost/stacktrace/stacktrace.hpp而不是boost/stacktrace.hpp时,我的程序即使在纯c++中也无法打印堆栈跟踪。

这可能是因为这不是正确的用法。正确配置库有很多细节,请参阅https://www.boost.org/doc/libs/1_79_0/doc/html/stacktrace/configuration_and_build.html。一种可能的配置导致无操作实现。

相关内容

最新更新