精华内容
下载资源
问答
  • VS2010动态库调试方法

    千次阅读 2017-05-27 06:12:18
    打开调用动态库的程序,之后在“解决方案资源管理器”中,选中“解决方案’XXX’”,之后在右键菜单中选择“添加->现有项目”,之后在“添加现有项目”对话框中选择动态库程序的vcxproj文件,如图1所示。此时就将这...

    1 将动态库与调用动态库的程序放在同一解决方案下

    打开调用动态库的程序,之后在解决方案资源管理器中,选中解决方案’XXX’”,之后在右键菜单中选择添加->现有项目,之后在添加现有项目对话框中选择动态库程序的vcxproj文件,如图1所示。此时就将这两个程序放在了同一解决方案下。

     

    1

    之后,就可以在动态库中下断点进行调试了。

    2 将动态库文件拷贝到调用动态库的程序的文件夹中

    如果动态库与调用动态库的程序放在同一解决方案下,可将动态库文件拷贝到调用动态库的程序的相应文件夹中。首先对这两个程序分别“重新生成解决方案”,之后将动态库生成的所有文件都拷贝到调用动态库的程序所在的目录下,如图2所示

     

    2

    接下来在动态库项目中选择菜单栏“项目->XXX属性”,在弹出的“XXX属性页”中选择“配置属性->调试”,之后在右侧的“命令参数”中,加入调用动态库的程序所在的目录,如图3所示。

     

    3

    最后,就可以在动态库程序中下断点进行调试了。

    展开全文
  • VS动态库调试方法

    千次阅读 2018-12-04 16:49:20
    1 将动态库与调用动态库的程序放在同一解决方案下 打开调用动态库的程序,之后在“解决方案资源管理器”中,选中“解决方案...之后,就可以在动态库中下断点进行调试了。 2 将动态库文件拷贝到调用动态库的程序的文...

    1 将动态库与调用动态库的程序放在同一解决方案下
    打开调用动态库的程序,之后在“解决方案资源管理器”中,选中“解决方案’XXX’”,之后在右键菜单中选择“添加->现有项目”,之后在“添加现有项目”对话框中选择动态库程序的vcxproj文件,如图1所示。此时就将这两个程序放在了同一解决方案下。

    图1

    之后,就可以在动态库中下断点进行调试了。

    2 将动态库文件拷贝到调用动态库的程序的文件夹中
    如果动态库与调用动态库的程序放不在同一解决方案下,可将动态库文件拷贝到调用动态库的程序的相应文件夹中。首先对这两个程序分别“重新生成解决方案”,之后将动态库生成的所有文件都拷贝到调用动态库的程序所在的目录下,如图2所示

    图2

    接下来在动态库项目中选择菜单栏“项目->XXX属性”,在弹出的“XXX属性页”中选择“配置属性->调试”,之后在右侧的“命令参数”中,加入调用动态库的程序所在的目录,如图3所示。

    图3

    最后,就可以在动态库程序中下断点进行调试了。

    原文:https://blog.csdn.net/hou09tian/article/details/72777921 

    展开全文
  • VS2010如何调试动态库

    千次阅读 2014-12-23 13:48:35
    项目A是dll动态库项目。项目B是调用dll动态库的exe项目。怎么调试dll动态库里的程序呢? B生成解决方案之后,选择只运行,不调试(不能调试,因为要在dll项目中调试)。 然后在A项目的调试->附加到进程,选择B运行...

    项目A是dll动态库项目。项目B是调用dll动态库的exe项目。怎么调试dll动态库里的程序呢?

    B生成解决方案之后,选择只运行,不调试(不能调试,因为要在dll项目中调试)。

    然后在A项目的调试->附加到进程,选择B运行后的exe。即可调试dll中的程序了。


    最近领导传来个项目,没法这样调试,后来把B项目的配置信息改了下就可以了,具体改法,项目->项目属性页->配置属性->链接器->调试->生成调试信息->选择是(DEBUG)即可调试了。

    展开全文
  • VS动态库调试

    千次阅读 2015-01-02 15:48:29
    程序开发中,经常会使用到动态库动态库不能直接运行,需要依赖其他程序调用,那么我们该如何调试我们的动态库呢?本文通过一个简单的例子说明。

    程序开发中,经常会使用到动态库,动态库不能直接运行,需要依赖其他程序调用,那么我们该如何调试我们的动态库呢?本文通过一个简单的例子说明。

    使用工具:VS2008

    使用语言:C++

    开发步骤:

    1.调用动态库的应用程序

    1.1新建对话框应用程序


    1.2设计动态库接口

    该接口用于在加载动态库时显示动态库的一些基本信息
    DllTestAppDlg.h
    struct tDLL_INFORMATION
    {
    	LPCTSTR	sDLLName;
    	LPCTSTR	sFuncDescr;
    	LPCTSTR	sAuthorName;
    };
    
    typedef bool (*LPFNREGISTER_CreateObject)(void**);
    typedef bool (*LPFNREGISTER_GetDllInformation)(void**);
    typedef bool (*LPFNREGISTER_ReleaseObject)(void*);
    DllTestAppDlg.cpp
    void CDllTestAppDlg::OnBnClickedBtnLoad()
    {
    	CString s1 = _T(""), s=_T("");
    	s = _T("dll files(*.dll)|*.dll|所有文件(*.*)|*.*||");
    	CFileDialog de(true, s1, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR,s, NULL );
    	if(de.DoModal() == IDOK)
    	{
    		m_sDllPathName = de.GetPathName();		//path and filename
    	}
    	else
    	{
    		return;
    	}
    
    	if(m_sDllPathName.IsEmpty())
    	{
    		m_btnRunDll.EnableWindow(FALSE);
    	}
    	else
    	{
    		m_btnRunDll.EnableWindow(TRUE);
    	}
    
    	CString str = _T("");
    	int cnt = 0,i = 0;
    	char p[256]={0};
    	LPFNREGISTER_GetDllInformation lpfnRegister;
    	HINSTANCE hInDll = NULL;
    	hInDll = LoadLibrary(m_sDllPathName);
    	str = _T("GetDllInformation");
    	cnt = str.GetLength();
    	for(i=0; i<cnt; i++)
    	{
    		p[i] = str.GetAt(i);
    	}
    	lpfnRegister=(LPFNREGISTER_GetDllInformation)GetProcAddress(hInDll,p);
    
    	tDLL_INFORMATION* pInfo = NULL;
    	(*lpfnRegister)((void**)&pInfo);
    
    	str = pInfo->sDLLName;
    	m_sDLLName = _T("");
    	cnt = str.GetLength();
    	for(i=0;i<cnt;i++)
    	{
    		m_sDLLName = m_sDLLName + str.GetAt(i);
    	}
    
    	str = pInfo->sFuncDescr;
    	m_sFuncDescr = _T("");
    	cnt = str.GetLength();
    	for(i=0;i<cnt;i++)
    	{
    		m_sFuncDescr = m_sFuncDescr + str.GetAt(i);
    	}
    
    	str = pInfo->sAuthorName;
    	m_sAuthorName = _T("");
    	cnt = str.GetLength();
    	for(i=0;i<cnt;i++)
    	{
    		m_sAuthorName = m_sAuthorName + str.GetAt(i);
    	}
    
    	FreeLibrary(hInDll);
    
    	UpdateData(0);
    }
    效果

    1.3设计调用接口类

    MyDllService.h

    #pragma once
    
    #define ERR_SER_OK             0x0000
    #define ERR_SER_RUN_FAILED     0x0001
    #define ERR_SER_RUN_CANCEL     0x0002
    #define ERR_SER_LOAD_PARAM     0x0003
    
    class CMyDllService
    {
    public:
    	CMyDllService(void){};
    	~CMyDllService(void){};
    public:
    	virtual DWORD RunService(){return ERR_SER_RUN_FAILED;};
    };
    
    调用

    void CDllTestAppDlg::OnBnClickedBtnRun()
    {
    	if(m_sDllPathName.IsEmpty())
    	{
    		MessageBox(_T("DLL路径为空。"));
    		return;
    	}
    	CMyDllService* pSer = NULL;
    	HINSTANCE hIn = NULL;
    	hIn = LoadLibrary(m_sDllPathName);
    	if(hIn != INVALID_HANDLE_VALUE)
    	{}
    	else
    	{
    		CString info = _T("载入") + m_sDllPathName + _T("失败");
    		MessageBox(info);
    		return;
    	}
    
    	CString str = _T("");
    	int cnt = 0,i = 0;
    	char p[256]={0};
    	str = _T("CreateObject");
    	cnt = str.GetLength();
    	for(i=0; i<cnt; i++)
    	{
    		p[i] = str.GetAt(i);
    	}
    	LPFNREGISTER_CreateObject lpfnRegister;
    	lpfnRegister=(LPFNREGISTER_CreateObject)GetProcAddress(hIn,p);
    
    	bool result = false;
    	if(lpfnRegister)
    	{
    		result =(*lpfnRegister)((void**)&(pSer));
    	}
    	else
    	{
    		FreeLibrary(hIn);
    		CString info = _T("载入") + m_sDllPathName + _T("失败");
    		MessageBox(info);
    		return;
    	}
    
    	if(pSer && result)
    	{
    		DWORD dwError = 0;
    		dwError = pSer->RunService();
    	}
    	else
    	{
    		FreeLibrary(hIn);
    		CString info = _T("运行") + m_sDllPathName + _T("失败");
    		MessageBox(info);
    		return;
    	}
    
    
    	char p2[256]={0};
    	str = _T("ReleaseObject");
    	cnt = str.GetLength();
    	for(i=0; i<cnt; i++)
    	{
    		p2[i] = str.GetAt(i);
    	}
    	LPFNREGISTER_ReleaseObject lpfnRegister1;
    	lpfnRegister1=(LPFNREGISTER_ReleaseObject)GetProcAddress(hIn,p2);
    	if(lpfnRegister1)
    	{
    		result =(*lpfnRegister1)((void*)pSer);
    		pSer = NULL;
    	}
    
    	FreeLibrary(hIn);
    }
    效果

    1.4文件结构图

     

    2.对话框动态库

    2.1新建对话框动态库

    设置属性为在静态库中使用


    2.2添加接口类


    2.3从接口类派生自己的类并重新虚函数

    MyDlgDllService.h
    #pragma once
    #include "mydllservice.h"
    
    class CMyDlgDllService : public CMyDllService
    {
    public:
    	CMyDlgDllService(void);
    	~CMyDlgDllService(void);
    	DWORD RunService(void);
    };
    MyDlgDllService.cpp
    #include "StdAfx.h"
    #include "MyDlgDllService.h"
    #include "TestDlg.h"
    
    CMyDlgDllService::CMyDlgDllService(void)
    {
    }
    
    CMyDlgDllService::~CMyDlgDllService(void)
    {
    }
    
    DWORD CMyDlgDllService::RunService(void)
    {
    	CTestDlg dlg;
    	dlg.DoModal();
    
    	return ERR_SER_OK;
    }
    

    2.4设计动态库接口

    struct tDLL_INFORMATION
    {
    	LPCTSTR	sDLLName;
    	LPCTSTR	sFuncDescr;
    	LPCTSTR	sAuthorName;
    };
    
    extern "C"
    __declspec(dllexport) bool CreateObject(void** pObj )
    {
    	*pObj  = new CMyDlgDllService;
    	return true;
    }
    
    extern "C"
    __declspec(dllexport) bool GetDllInformation(void** pInfo)
    {
    	
    	*pInfo = new tDLL_INFORMATION;
    	((tDLL_INFORMATION*)(*pInfo))->sDLLName = _T("dll");
    	((tDLL_INFORMATION*)(*pInfo))->sFuncDescr = _T("dll test");
    	((tDLL_INFORMATION*)(*pInfo))->sAuthorName = _T("tester");
    		
    	return true;
    }
    
    extern "C"
    __declspec(dllexport) bool ReleaseObject(void* pObj)
    {
    	CMyDlgDllService* pTempObj = NULL;
    	pTempObj = (CMyDlgDllService*)pObj;
    	delete pTempObj;
    	return true;
    }

    2.5文件结构图

     

    3.动态库调试设置

    开发动态库程序,需要对动态库进行调试,那么我们该如何启用我们的动态库调试程序呢?
    VC6中我们可以通过工程-->设置来设置一个exe应用程序调用我们的动态库,那么VS呢?
    下面用图解的方法说明步骤:
    在工程上右键-->属性-->调试-->命令,设置调用DLL的应用程序exe的路径,可以是相对路径,也可以是绝对路径,这样我们的程序在运行时就可以通过这个应用程序接口调用我们正在开发的动态库了。

      

     

    源码下载



    展开全文
  • VS2010调试动态库遇到的问题

    千次阅读 2016-09-08 16:31:51
    最近做项目调试dll中的代码时,发现断点断不住。 以前在调试dll时将dll和exe放在一个解决方案下即可。于是我清理了解决方案并重新生成解决方案,依然没什么用。 后来观察生成的文件发现dll和exe并不在同一个目录下,...
  • Qt动态库调试方法

    千次阅读 2016-01-18 16:46:20
    Qt动态库调试方法, 我写了一个动态库提供给客户端加在使用,但是在使用我的动态库生成的控件时, 发生了程序崩溃的情况,很明显是我动态库中代码出现了问题。而且我没有客户端代码, 只有客户端可运行程序。为了找...
  • gdb动态库调试分析文档

    千次阅读 2015-03-09 11:21:26
    本文基于linux应用程序本地调试分析,阐述了linux应用程序动态库调试的机制。
  • Qt动态库调试方法2

    千次阅读 2016-02-23 14:30:00
    之前写过一个Qt动态库调试方法的博客, 那种方法应用的场景是,在没有调用动态库的主程序的代码的情况下对与动态库进行调试。 但也存在许多问题,比如不能准确的确定程序崩溃的地方。 今天讲的方法适用的情况...
  • 通常我们自己封装dll,然后给某个exe...命令:添加我们需要调试的可执行程序名字(进入方法:项目名称=》属性=》配置属性=》调试=》命令) 工作目录:就是我们即将调试的可执行程序的路径(进入方法与上面一样) 我...
  • gdbserver调试ubuntu上的程序,使用vs 2017编译直接F5调试 在可执行文件中添加断点是可以进行调试的。...在动态库中添加断点,也提示“当前不会命中断点”,请问VS2017该怎样设置才能调试动态库中的函数?
  • gdb 单步调试动态库.
  • 动态库调试和崩溃的处理方法

    千次阅读 2016-06-04 21:31:26
    主要讲在VS2010中怎么调试动态库,另外讲一下VS2010开发的应用程序崩溃时,怎么定位问题。
  • GDB调试动态库

    万次阅读 2018-08-22 13:20:23
    gdb如何调试动态链接的问题。比如我想调试的代码为动态链接代码,我设置断点后却得到以下错误 (gdb) b mps_guide_db.c:1699 No source file named mps_guide_db.c. Make breakpoint pend...
  • Unity调试C++动态库

    千次阅读 2018-02-22 14:08:12
    C++动态库工程输出目录设为Unity工程下Assets/Plugins/..;确保动态库的平台架构和unity的架构一致,X...VS设置:动态库工程调试--附加到进程--unity;待定http://blog.csdn.net/foreverml/article/details/29818509...
  • 用WebBroker创建好Apache2.4的动态库后,如果需要调试动态库,其实与调试其他动态库的方式完全一样,只需要注意以下几点:1、IDE中设置该工程的Options,使其编译后的动态库输出目录指向在Apache中已经配置好的...
  • VS调试c++动态库最简单最高效的方法

    千次阅读 2018-03-20 18:09:54
    有如下动态库代码【顺便写一个main函数调用】:此时有两种方法可以修改工程属性方法一:直接修改工程对应的vcxproj文件1.将&lt;SubSystem&gt;Windows&lt;/SubSystem&gt; 替换成&lt;SubSystem&...
  • 使用gdb调试动态链接

    千次阅读 2019-05-10 08:59:04
    在使用gdb进行调试之前,必须保证编译的可执行程序和想要调试动态库编译包含了-g选项。这里还有一个坑,有时候我们虽然指定-g进行了编译,但是编译完成后又使用strip命令去除了调试信息,那么最终的程序和库也是...
  • Delphi动态调试动态库步骤

    千次阅读 2007-10-20 08:23:00
    本文详细介绍Delphi5环境下如何调试动态库(包括进程内COM组件)。... 选择所需要调试动态库 4. 将该动态库设为 5. 运行程序,程序会在加载该动态库时停下来 6. 再次打开Modules对话框,找到该动态库,右键选
  • c++动态链接库调试设置

    千次阅读 2016-11-09 23:06:21
    开发动态库程序,需要对动态库进行调试,那么我们该如何启用我们的动态库调试程序呢? VC6中我们可以通过工程-->设置来设置一个exe应用程序调用我们的动态库,那么VS呢? 下面用图解的方法说明步骤: 在...
  • DELPHI 2010 动态链接DLL断点调试

    千次阅读 2013-03-04 12:12:49
    DELPHI 2010 动态链接DLL断点调试  马根峰   (广东联合电子服务股份有限公司,广州 510300)   摘要:本文详细介绍了Delphi 2010中的动态链接DLL断点调试技术 关键词:DELPHI 2010;Dll断点调试;   ...
  • C# 调试动态库(DLL)

    千次阅读 2017-01-17 10:01:07
    将调用DLL文件的工程中的“引用”上右键,选择“添加引用”,在弹出的对话框中,选择“dll文件的工程生成动态库的路径”下对应的DLL文件即可。
  • 不同语言之间可以通过调用动态链接 (dll)来调用别人写好的函数 同一语言可以调用别人写好的静态(lib) 静态链接:是通过静态联编的,在链接时,link将自己的(.obj)二进制文件和别人的lib文件一起共同...
  • 动态加载动态库无法单步调试,断点可以设置成功,也能进入断点,就是不能单步调试
  • linux 调试动态库

    千次阅读 2010-03-16 16:21:00
    我最近的工作是在linux环境下测试一个.so的动态库,我暂时命名为libdawn.so,是同事实现的,我需要再我的测试程序中加载这个库,并调试该库,我用的编译环境是Eclipse. 1. 在Eclipse->Project->Properities->c/c++ ...
  • 使用VS2015调试Android的C++动态链接

    千次阅读 2016-10-22 17:58:31
    使用VS2015调试Android的C++动态链接库VS2015相对于过去的IDE在跨平台方面做了很大的支持,支持对linux操作系统进行远程GDB调试,由于VS2015强大的C/C++调试功能,本文将介绍,如何用VS2015调试android的动态链接...
  • 环境:windows10专业版,VS2017企业版 因为业务需要,需要同时整合VC动态库和C#动态库到一个程序中,主...2、托管C++程序调用托管C++动态库时需要配置调试选择,否则程序无法调试VS2017调试选项配置如下: ...
  • 本项目是改编自:https://github.com/Naituw/IPAPatch 在此基础上添加了一些常用的方法,比AloneMonkey大神的MonkeyDev更加轻量级,适合快速动态分析一些APP。 使用方法很简单,只需要从Git上clone该项目,然后将已...
  • 本文涉及的工程在下面的链接可以下载: ...一、编写动态链接dll 第一步:建立一个dll的工程。 第二步:创建头文件 dll.h 代码: #ifndef DLL_H #define DLL_H extern "C" __declspec(dllexport) int add(i
  • android 动态库死机调试方法

    万次阅读 多人点赞 2011-12-15 17:47:47
    这两种方法都不是我发明了,都是网上一些高手公共出来的调试方法,无奈找不到出处的地方了,所以就在此总结一下,以方便android下的调试: 简要说明: android系统中调试Java非常...下在介绍一个简单的调试库

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,902
精华内容 71,160
关键字:

动态库调试vs2010