Boost 的堆栈跟踪库不适用于 C++ CLI
Boost's stacktrace library doesn't work with C++ CLI
我一直在使用 Boost 堆栈跟踪库来打印我的程序的堆栈跟踪。
当用纯 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 编译不会将堆栈跟踪打印到标准输出,而使用纯 C++ 编译会将其打印到标准输出。
另一件事是,当我使用 boost/stacktrace/stacktrace.hpp
而不是 boost/stacktrace.hpp
时,即使在纯 C++ 中,我的程序也无法打印堆栈跟踪。
遗憾的是,我在堆栈溢出上找不到任何关于此问题的参考资料。
我在 Windows,我正在使用 Visual Studio 2022。
我使用的是Boost版本版本:1.78.0.
我用 vcpkg 安装了 boost。
谢谢
我不认为 Boost Stacktrace 声称支持 CLR。
我期待一些输出,但不是特别有用的输出。
当然,在 CLR 模式下,您可以使用 .NET 堆栈跟踪:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace?view=net-6.0
Another thing is that when I use boost/stacktrace/stacktrace.hpp instead of boost/stacktrace.hpp my program fails to print the stacktrace even in pure C++.
这可能是因为这不是正确的用法。正确配置库有很多具体细节,请参阅 https://www.boost.org/doc/libs/1_79_0/doc/html/stacktrace/configuration_and_build.html。其中一种可能的配置导致 no-op 实施。
我一直在使用 Boost 堆栈跟踪库来打印我的程序的堆栈跟踪。
当用纯 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 编译不会将堆栈跟踪打印到标准输出,而使用纯 C++ 编译会将其打印到标准输出。
另一件事是,当我使用 boost/stacktrace/stacktrace.hpp
而不是 boost/stacktrace.hpp
时,即使在纯 C++ 中,我的程序也无法打印堆栈跟踪。
遗憾的是,我在堆栈溢出上找不到任何关于此问题的参考资料。
我在 Windows,我正在使用 Visual Studio 2022。
我使用的是Boost版本版本:1.78.0.
我用 vcpkg 安装了 boost。
谢谢
我不认为 Boost Stacktrace 声称支持 CLR。
我期待一些输出,但不是特别有用的输出。
当然,在 CLR 模式下,您可以使用 .NET 堆栈跟踪:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace?view=net-6.0
Another thing is that when I use boost/stacktrace/stacktrace.hpp instead of boost/stacktrace.hpp my program fails to print the stacktrace even in pure C++.
这可能是因为这不是正确的用法。正确配置库有很多具体细节,请参阅 https://www.boost.org/doc/libs/1_79_0/doc/html/stacktrace/configuration_and_build.html。其中一种可能的配置导致 no-op 实施。