【问题标题】:Debug Quantlib Source code调试 Quantlib 源代码
【发布时间】:2016-11-22 04:15:16
【问题描述】:

我最近开始在 Visual Studio 中使用 Quantlib。我已成功安装并运行 Quantlib。我还设法使用 Quantlib 对 Swap 和 Swaption 等产品进行定价。掉期价格与我自己的 VBA 计算器非常匹配(

虽然我可以在 Quantlib 安装文件夹中手动定位源文件,但对调试没有帮助。所以我的问题是,有什么方法可以在我的项目中单步执行 Quantlib 源代码?

例如,我目前对BlackSwaptionEngine中的详细计算步骤感兴趣。我只需要设置掉期和定价引擎,并使用 Quantlib NPV 函数得到结果:

boost::shared_ptr<Exercise> europeanExercise(new EuropeanExercise(expiryDate));
Swaption testSwaption(swap, europeanExercise);

boost::shared_ptr<PricingEngine> swaptionEngine(new BlackSwaptionEngine(forwardingTermStructure, Vol));

testSwaption.setPricingEngine(swaptionEngine);

double res = testSwaption.NPV();

是的,我可以得到结果。但我也想知道 BlackSwaptionEngine 内部的中间结果。因此,逐步查看源代码似乎是找出这一点的好方法。如何在我的项目中包含 Quantlib 源代码进行调试?

感谢任何帮助。非常感谢。

【问题讨论】:

  • 您需要获取或构建调试版本并链接到该版本。没有办法(我见过或可能想象过)将非调试库与源文件结合起来以“添加”调试能力。顺便说一句,它现在被称为std::shared_ptr,已经在 C++11 中标准化,所以你应该使用那个版本。
  • 不,他不应该。该库仍然使用 C++03 和 boost::shared_ptr,因为相当多的用户仍然无法说服他们的 IT 部门将他们的编译器升级到最新版本。银行就是那样有趣。
  • 关于调试:@underscore_d 所说的。你从哪里得到预建库?你可以自己构建它吗?
  • @LuigiBallabio 哦,我没有注意到库按原样接收了boost 指针(然后可能会绊倒我无意识的、明显错误的假设,即智能指针提供了到@987654326 的转换@!D:)
  • @underscore_d 感谢您的快速回复。您是否有机会就“针对调试版本的链接”进行更多解释。我想我在调试模式下构建了库。我按照此链接 (quantlib.org/install/vc10.shtml) 设置参考。基本上,只需在 VC++ 目录中设置路径即可。我还在 Visual Studio 的调试中禁用了“仅启用我的代码”。但是,我能看到的仍然是那些头文件。

标签: c++ quantlib


【解决方案1】:

我最终设法调试到 Quantlib 源代码。正如 Luigi 建议的那样,我们需要在 Debug 模式下构建 Quantlib,然后将库和目录链接为这个链接:

quantlib.org/install/vc10.shtml

然后,我们就可以在应用项目中单步进入Quantlib的源码了。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 2019-04-25
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2012-05-16
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多