SWIG 在 Windows 平台上的调试

Posted kuliuheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SWIG 在 Windows 平台上的调试相关的知识,希望对你有一定的参考价值。

1、VS调试

  用VS2015(其他版本应该也可以,未验证)调试SWIG,默认会发现SWIG源码中的Node*都看不到内容,因为Node类型其实是Void,VS没法直接识别的。好在SWIG自身封装了一个很棒的方法叫做Swig_print_node(在tree.c文件中)可以随时打印运行时的Node*,我原来的想法是运行之前先插入打印语句,这肯定不便于调试,这时候VS牛逼的功能浮出了水面,用“即时窗口”功能,直接输入函数可以动态运行:

技术分享图片

 2、SWIG 节点内容

  这里先给一个示例,后续再不断研究其含义:

+++ cdecl - 000000000FC62880 ----------------------------------------
| value        - "0"
| feature:director:except - "0"
| feature:java:const - "1"
| name         - "OnNewRoute"
| ismember     - "1"
| sym:symtab   - 000000000CAB6B50
| classDirectorMethods:type - "void"
| kind         - "function"
| sym:name     - "onNewRoute"
| returntype   - "void"
| view         - "classDirectorMethods"
| feature:package - "com.autonavi.gbl.route.observer"
| decl         - "f(int32_t,bl::RouteResultType,p.bl::IPathResult,uint64_t,bool)."
| feature:j2creflect - "0"
| access       - "public"
| feature:java:enum - "typeunsafe"
| parms        - int32_t mode,bl::RouteResultType type,bl::IPathResult *pathResult,uint64_t externData,bool isLocal
| abstract     - "1"
| type         - "void"
| storage      - "virtual"
| sym:overname - "__SWIG_0"
| tmap:jstype  - "void"
| valuetype    - "int"
|

 

以上是关于SWIG 在 Windows 平台上的调试的主要内容,如果未能解决你的问题,请参考以下文章

Windows下通过ARM目标板上的gdbserver进行远程调试的方法

在 Mac 上的 Python 2.7.3 中导入 .pyd(使用 SWIG 创建)

在 Microsoft Azure 平台虚拟机上调试 Windows 内核

模板包装上的 SWIG 错误

在 Windows 中为 python 编译 SWIG 包装器

用Swig将c/c++程序转为java代码(使用swig实现java调用cc++的方法)