UHD USRP 在调试模式下崩溃
UHD USRP crash in debug mode
我有一个简单的 USRP B200 接收器应用程序。它在发布模式下工作正常,但在调试模式下崩溃。调用以下方法时程序崩溃。
uhd::usrp::multi_usrp::make(args)
这里是崩溃时的堆栈视图:
该程序只需要来自 boost 库的 libboost_thread。我尝试了不同的版本(libboost_thread-vc141-mt-x64-1_69.lib、libboost_thread-vc141-mt-gd-x64-1_69.lib、libboost_thread- vc141-mt-sgd-x64-1_69.lib) 但得到了相同的结果。
环境:
OS: Windows 10 和 11
编译器:MSVC2017、MSVC2015 64 位
超高清版本:3.15.0.0 和 4.1.0.5
Boost 版本:1.69、1.69、1.77 和 1.79
Libusb 版本:1.0(调试模式 dll)
编辑:
该程序在发布模式下稳定运行。此外,像这样的类似程序在 Ubuntu 的发布和调试模式下运行良好,但在 Windows 的调试模式下崩溃。所以,我不认为这是导致崩溃的隐藏错误。我怀疑 Windows 中的调试模式在 UHD、Boost 和 MSVC 之间存在一个点。如有任何帮助,我将不胜感激。
我发现了问题。 UHD 二进制文件必须使用相同的构建配置。在调试模式下使用构建的 uhd.dll 版本会导致崩溃。
不幸的是,UHD 的官方版本不包含调试版本。需要调试版的,需要自己编译。这是构建指南:
https://files.ettus.com/manual/page_build_guide.html
这里是我的调试版本,用于测试目的。
https://github.com/huzeyfe-erkek/UHD-binaries
我有一个简单的 USRP B200 接收器应用程序。它在发布模式下工作正常,但在调试模式下崩溃。调用以下方法时程序崩溃。
uhd::usrp::multi_usrp::make(args)
这里是崩溃时的堆栈视图:
该程序只需要来自 boost 库的 libboost_thread。我尝试了不同的版本(libboost_thread-vc141-mt-x64-1_69.lib、libboost_thread-vc141-mt-gd-x64-1_69.lib、libboost_thread- vc141-mt-sgd-x64-1_69.lib) 但得到了相同的结果。
环境:
OS: Windows 10 和 11
编译器:MSVC2017、MSVC2015 64 位
超高清版本:3.15.0.0 和 4.1.0.5
Boost 版本:1.69、1.69、1.77 和 1.79
Libusb 版本:1.0(调试模式 dll)
编辑: 该程序在发布模式下稳定运行。此外,像这样的类似程序在 Ubuntu 的发布和调试模式下运行良好,但在 Windows 的调试模式下崩溃。所以,我不认为这是导致崩溃的隐藏错误。我怀疑 Windows 中的调试模式在 UHD、Boost 和 MSVC 之间存在一个点。如有任何帮助,我将不胜感激。
我发现了问题。 UHD 二进制文件必须使用相同的构建配置。在调试模式下使用构建的 uhd.dll 版本会导致崩溃。
不幸的是,UHD 的官方版本不包含调试版本。需要调试版的,需要自己编译。这是构建指南:
https://files.ettus.com/manual/page_build_guide.html
这里是我的调试版本,用于测试目的。
https://github.com/huzeyfe-erkek/UHD-binaries