python如何调试C++编译的dll

如题,由c++编译dll提供接口给python调用。出现错误想知道执行到了哪一步。请问各位有没有好的调试方法。通过return返回值的方法已经被使用了,其实最好的解决方案是能够在python的控制台下有输出,请问这两个之间有没有什么方法,或者其他的解决方案。

3个回答

如果你是用vc++开发的dll,那么可以在dll的代码中设置好端点,然后选择调试,等待宿主进程,然后运行你的python程序。或者先运行python,然后在vs里附加进程调试。后者适合那种gui的程序,也就是python程序一开始运行不调用dll,而是你输入什么参数或者点了什么按钮才调用。

如果有dll源代码的话可以在关键位置插入debug语句输出到log文件,调试效果就和输出到python控制台差不多;
如果无法改变dll内容,又觉得是dll内部函数的问题,可以另外写一个简单的测试项目逐一对dll内的函数进行排查。

想调试c++的库要设定好执行的exe,然后在库函数内加断点就可以了,你不可能用python来调试c++,调试用的编译器还是你做出库的那个编译器,比如vs2013;
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python如何调试C++编译的dll
如题,由c++编译dll提供接口给python调用。出现错误想知道执行到了哪一步。请问各位有没有好的调试方法。通过return返回值的方法已经被使用了,其实最好的解决方案是能够在python的控制台下有输出,请问这两个之间有没有什么方法,或者其他的解决方案。
如果调试VB编译的DLL
如题。在用VB编写代码编译成DLL供ASP使用。但因为错误较多,不知道怎么查错。在ASP中,没有明显的显示组件的错误行数。rn求解
在vs 2005下如何编译和调试C程序?
比如,这样一个简单的程序X.Crn#include rnrnint main()rnrn int a, b, c;rn printf("Enter the first value:");rn scanf("%d", &a);rn printf("Enter the second value:");rn scanf("%d", &b);rn c = a + b;rn printf("%d + %d = %d\n", a, b, c);rn return 0;rnrn在vs 2005下如何编译和调试?rn原帖来自于网易社区:http://p5.club.163.com/viewArticleByWWW.m?boardId=clanguage&articleId=clanguage_10bcbb959b928a0
VS调试python中的DLL
1)python程序调试 (pdb)。 2)配置VS为python的IDE。 3)VS调试python中的DLL。
c和fortran如何编译生成dll
我现在有的文件如下:rnBLAS.librnCMB82.crnCMB82.defrnCMB82.incrnCMB82a.forrnCMB82b.forrnLAPACK.librnWKShead.hrn这是在网上下的别人的DLL源文件,怎样才能重新编译成dll文件
C中常用的调试方法、DLL的调试
C中常用的调试方法 调试的最常用的方法,假如我们怀疑一个整形变量x有问题的话,可以:1, CString str;str.Format(“%d”,x);//和printf非常相似MessageBox(str);优点:点确定后程序才会继续运行。缺点:如果次数太多,过于浪费时间和键盘。2,Ctrl+F10运行到光标处,在Watch窗口中name项输入x,,后面会显示值。  优点:简单,可以查看所有的值
如何调试dll?
Hi,rn I would like to know what is the best way to debug a DLL in Microsoft Visual C. I am thinking to prompt debug message box or write to the error log file but I think it is not so convenient.
请教如何调试Dll
我用Shell Extension实现了Context Menu中加入某项Item的功能,但启动例如“复件 *.*”之类的Copy过来的文件时就会出现死机bug,我想跟踪我的ShellExtension Dll,但一时无从着手,请教各位高手,如何跟踪进我的Dll呢?
如何调试dll
我在调试dll时出现,我所选择的程序不含调试信息,还有就是如何设置断点
如何调试DLL?
我有一个程序调用一个DLL,我有此DLL的源代码,如何在此DLL中设断点调试?
请问DLL如何调试?
请问DLL如何调试?
DLL如何调试啊?
我在DLL所在工作区中建一个测试工程,通过DLL的头文件进行DLL引用,可是rn编译的时候报错;rnerror LNK2001: unresolved external symbolrnfatal error LNK1120: 1 unresolved externalsrn这是为何,是不是除了引用头文件外,还要在SETTING中设置什么东西啊?
如何进入dll调试
本来这只是一个小小的技巧,没有必要写入blog. 但是因为这debug的技巧能解决问题,也是因为想让更多的人都知道,至少是在网上搜索的时候更方便地找到,还是写下了这篇blog以作记载。
如何调试DLL??
我用VC++.NET写了一个DLL,不知道如何才能进行调试??
如何调试dll程序
我编写了一个dll程序,但是不知道怎么调试。rn查找csdn,解决办法是:" 在项目设置(Project->Setting)中,Debug这一页的“Exectable for debug session:”一项中填写你要调用DLL的应用程序"rnrn按F5时弹出对话框:"Please specify the executable file for the debug session"rn我这个dll是svchost.exe调用的,但是我输入文件C:\windows\system32\svchost.exe后,报"svchost.exe does not contain debugging information".换成rundll32.exe还是同样的错误。rnrn请问如何调试呢?该填写哪个exe程序。rn
如何调试动态加载的DLL
大家好rnrn 我有一个firefox的插件需要调试,VS2008编译的,但是这个插件是通过网页的标签动态加载的。rn 按照通常的方法制定调试程序后就是一连串的退出输出:rn /**************************************************rn 'CrBrowserMain' (0xa3c) 已退出,返回值为 0 (0x0)。rn 线程 'Win32 线程' (0x6bc) 已退出,返回值为 0 (0x0)。rn **************************************************/rnrn 小弟菜鸟,请教一下该如何调试这种动态加载的DLL呢rn 求知道的大哥赐教
123456789alloha如何调试dll
方法①: 对DLL的工程DEBUG,rn在DLL工程的Project Setting->Debug->Executable for debug session中加入你的.exe的路径和名字。rn可以在dll中设置断点,.exe程序必须要调用dll中函数。rnrn方法②: 有个更好的方法:(我也没试过)在settings/debug中category选additional dlls,rn然后将你要调试的dll加进来。这样,即使你用loadlibrary动态加载dll,也可以加断点了。rnrn在VS.net的测试中,还可以同时调试exe程序,调试dll实在系矛得弹。rnrnrn调试嘛,肯定在Debug模式中rnrn由于DLL程序不能生成窗口等等原因不好调试,所以我们无法了解DLL程序的流程是怎么样的。下面简单介绍一个如何来调试DLL程序。rnrn应该知道写DLL文件肯定是给某个应用程序使用的,如果没有程序用到它那它就没有存在的意义了。rnrn既然知道DLL是给某个应用程序使用之后,那么如果应用程序开始运行了,在加载DLL后,必然会进入到DLL程序内部去,如果这个时候DLL程序中设了断点,而断点又是DLL程序运行必经之处,那么运行到这个地方,应该会停下来的。rnrn那么调试是在应用程序中进行呢?还是DLL程序中进行呢?当然是DLL了 因为它就是我们调试的对象嘛。但必须要导入一个能够调用它的程序进来,通过应用程序的启动来达到调试的目的。rnrn那么如何在DLL中设置应用程序呢?rnrn很简单,打开VC 6.0 在vc里面打开要调试的DLL程序,点击菜单Project(中文版可能叫工程)->setting(设置) 可以看到一个对话框,左边Setting For要选Win32 Debug模式,Setting For下面是一个树形列表,显示的所有工程信息,选择一个你要调试的工程(不需要打开选择下面的.h,.cpp文件) rnrn右边点击Debug主要设置三个地方:rnrnCatagory:GeneralrnrnExecutable for debug session:这个目录很重要,这里就是选择应用程序了(这个应用程序必须要用到这个DLL文件) 比如说 你的DLL文件目录在E盘,而你的应用程序在C:\Test\Test.exe这里,那么这个目录就必须填写C:\Test\Test.exe。rnrnWroking directory:就是填写工作的目录,这里填的应用程序的工作目录就是C:\Test ,就是包含应用程序的目录 rnrn这样设置好了以后,就可以开始调试啦,你在DLL中设置断点,然后点击调试,可能会出现询问的一个窗口,不要选择那个勾,直接OK就可以了。然后应用程序出现后,你就可以模拟各种情况,来观察DLL中的行为了。rnrnOK!打完收工!rnrn rnrn还要加一些内容:按F5调试的时候怎么输入命令行参数?rnint main (int argc, char *argv[]); 就是这个argv,怎么才能输入? rnProject菜单中的“Settings…”,Debug选项卡,Program Arguments里边添写命令行参数。rnrnrnrn方法1: 对DLL的工程DEBUG,rn在DLL工程的Project Setting->Debug->Executable for debug session中加入你的.exe的路径和名字。rn可以在dll中设置断点,.exe程序必须要调用dll中函数。rnrn方法2: 有个更好的方法:(我也没试过)在settings/debug中category选additional dlls,rn然后将你要调试的dll加进来。这样,即使你用loadlibrary动态加载dll,也可以加断点了。rnrn方法3: 直接运行DLL就行了,那会让你指定调试程序,你把你准备调用它的程序的exe文件指给它,断点运行就可以了.rnrn你可能会找到很多如上面说的话,但你按照做时,却不行,设了断点也进不行.我也是按上面做的,调试了N久也没有个结果.如果你也在寻找这个问题的答案,而且你来到了这里,那就你就是找对地方了.哈哈rnrn下面进入正题:你把调用dll的.exe文件拷到dll的debug目录下,就可以调试断点了,进行调试了.我认为这句话是关键,但却网上为什么就有上面那几句话,没有关键的那句话呢,从中也可以看出,天下文一大抄,没有几个真正实践的.别人这么说我也这么说.....哎...............rn rn
如何调试dll工程
我在VS下建立一个WIN32的dll工程,准备做一个DLL动态链接库, 现在编译这个库没有问题,rn请问如何单步或断点调试dll中各各API接口函数是否正确,我编译后RUN运行弹出一个框提示rnExecutable For Debug Sessionrn....rnExecutable file name:rn...rnURL where the project can be accessed(ATL Server only)rn
钩子的dll如何调试?
钩子的dll怎么样调试?钩子的主程序和dll分别是两个工程。
如何调试dll回调函数?
a.exernb.dllrnc.exernrna.exe 调用b.dll里的sethook函数hook c.exernrn一切都正常,包括b.dll的 sethook函数 也都可以正常调试rn但是b.dll里的回调函数里设置断点后,并无法中断rnb.dll里设置AfxMessageBox 倒是可以弹出窗口rnrn这个如果调试dll里的回调函数???
如何调试DLL项目?
我想观察DLL文件中变量的值,但是我设置在DLL项目中的断点根本没有用,请问大家怎样才能象调试普通项目一样调试DLL项目?
dll如何调试
我看到论坛上有讲方法:rn打开dll工程,设置运行时的参数:Run-->Parameters-->输入你的EXE工程的完整路径名rn保证dll工程是Debug模式,然后在某行代码处加断点。rnrn设置dll工程师debug模式是什么意思
vs2005 如何调试dll
一个exe程序(没有源码工程) 中用到一个 atl项目 生成的dll,如何调试该dll?rnrn 我在项目属性调试-命令 那里填了该exe的路径,启动dll工程 总是提示说无法找到*.exe的调试信息,或者调试信息不匹配
如何调试C#的dll
如题,我是新手,麻烦说详细点~
用户控件(dll)如何调试...
我写了个用户控件,然后添加到工具箱上,新建项目后,将自己写的用户控件拖入新建项目的form中。此时我想调试那个用户控件,改如何调试?是否要开两个工程(1个为建立用户控件的工程,另一个为调用该控件的工程)?rnrn为什么我在建立用户控件的工程中的代码上打断点,运行调用该控件的工程,程序并没有打断...rnrn我看到字节编译的dll在别的项目中引用的时候,新项目会将要引用的dll拷贝一份到自己的bin->Release目录下,这样就不会断到建立用户控件的项目代码中了,如果是这样,那么我该怎么样来调试我的dll呢?rnrn请高手解答...谢ing...
如何调试DLL
我用C++BUILDER 想编个ASP组件 rn生成DLL 后 我用浏览器调用一遍后如发现有错 修改后就不能再编绎了rnC++BUILDER 提示 [Linker Fatal Error] Fatal: Could not open E:\Program Files\Borland\CBuilder6\Projects\Project1.dll (program still running?)rn只有重启机器才可以编绎rn不知有什么好的方法不需重启机器就可重新编绎?
>>>>如何调试dll?
如题,我该怎么调试我的dll呢?
vs2005下如何调试dll
请问如何设置属性在vs2005下调试dll?
DLL源码如何调试?
DLL源码如何调试?
如何调试DLL?
新做一个DLL,用另一个程序调用,但是想调试DLL如和做
如何调试注入的Dll
假若我要使用InjectDll.exe将Do.dll注入到Target.exe程序中,我们该如何去调试Do.dll这个动态链接库呢?          我们需要在Do.dll的属性的调试中,将命令设为Target.exe(不是InjecDll.exe)。          运行InjectDll.exe文件,使用本地windows调试器来调试Do.dll就可以对Do.dll进行调试了。
Dll如何单步跟踪调试?
谢谢。
DLL如何调试?
如题:rn特别是项目属性那栏,命令参数与工作目录那项该填什么
hook dll 如何调试
一个简单的dll,hook了NtCreateFile,然后我在dll里面打了个断点,F5启动,选择要注入的进程,但是此时断点好像是无效的,dll也没有注入到进程中?VC不能自己完成注入??我可以自己写一个程序完成注入,但是应该如何调试呢。。rnrnrn
MFC如何调试DLL
我在调试MFC的demo时候想进入到DLL函数中,我在MFC里的消息函数里和dll对应的函数都设了断点,不过dll函数设断点时候有个黄色三角形(里面是个感叹号,就跟网络连接受限制一样的标志),有大神说说具体调试的步骤和方法
注入的dll如何调试
vc6 下, 用一个loader.exe 注入 hack.dll 到目标进程 game.exe中rnloader.exe和hack.dll 都是自己写的,有工程有代码,都是debug模式,如何能调试这个hack.dll, 试了加断点然后F5,断点断不下来。
如何调试DLL程序??
刚接触这方面编程,请有经验的朋友分享你的编程经验..下面是我调试一个DLL:rnrn比如我现在建立个工程DllLib,先编译这个DllLib,生成了DllLib.h, DllLib.lib, DllLib.dllrnrn我再创建个工程专门用来测试上面这个工程,名为DllTest,然后我把上述的三个文件都复制到这个DllTest工程中,再加载导出的函rnrn数,查看结果是否正确.这样,如果我的DllLib中没有错还好,要是有一些错误(非语法错)我怕就不好找到在哪了.rnrn请问:你们在写DLL时是怎样调试的,越详细越好.
请问如何调试dll
试过了如下方法:rn1、利用Run->Parameters:rn2、Run->Add breakpoint->Module Load Breakpoint:将编译完成的这个dll加入rn3、View->Debug Windows->Modules:将编译完成的这个dll加入rn奇怪的是三种方法都拦截不到dll的运行,就是在dll里设置断点却没有停下来,想从主程序按f7进入dll得函数也不行,请问这是为什么?应该如何做呢?能否写个具体步骤?rnrn
如何调试编写的DLL
是这样的,我原来在测试程序中用隐式调用,单步执行可以进入DLL中的函数。可现在不知道什么原因。现在单步执行怎么也不能进入函数了,谁能解释一下!
如何调试反射的dll
自己写的dll,如果是反射的话,正常情况下调试是不会进入断点的,以下就讲解一下怎么进入断点。 1、打开dll对应的代码,在需要调试的地方加入断点 2、右键断点-》点击条件-》有一个允许代码与原始版本不同的选项,勾选了再调试就可以了。 不同的vs版本这个勾选项可能放的位置不一样,找出来勾上就好了。
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件