码迷,mamicode.com
首页 > 其他好文 > 详细

调试带有源代码的DLL文件

时间:2015-05-18 06:23:11      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

工作环境:dll源代码是c,在Visual studio 2010中调试。

第一步,调试的准备。


用C#语言编写一个测试dll文件的程序,由于dll源程序是c的,且运行结果是黑屏的,所以C#代码也是运行在黑屏的console环境下。完整代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
 
namespace TestMelp
{
    class Program
    {
        [DllImport(@"D:\Visual Studio Projects\FileMelp\Debug\FileMelp.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        extern static void cmd_melp(int argc, string[] argv);
        static void Main(string[] args)
        {
            //string cmd = "melp -s -i D:/bin/bit -o D:/bin/output";
            string cmd = "melp -a -i D:/bin/inputD -o D:/bin/bitRight";
            string[] argv = cmd.Split(new char[] { ‘ ‘ });
            int argc = argv.Length;
            cmd_melp(argc, argv);
        }
    }
}

  由于调试的FileMelp.dll文件和本程序不在同一个文件夹下,容易出现文件地址问题,所以本测试程序的文件均采用绝对地址。另外cmd的格式要求不能有两个连续的空格,也可以通过使用Trim函数,解决这个问题。

第二步,定位到自己改写的带有源代码的dll工程。


本文的FileMelp.dll工程,是通过本空间的生成VS dll那篇博客生成的,具体实现方法不在赘述。下面的两段代码分别添加到FileMelp工程melp.h和melp.c文件最下面。

#ifndef LIB_H
#define LIB_H
extern _declspec(dllexport) void cmd_melp(int argc, char **argv);
/* 加入任意你想加入的函数定义*/
#endif

void cmd_melp(int argc, char **argv)
{
    main(argc,argv);
}

  按F6,上述步骤实现FileMelp.dll动态库的生成。

第三步,添加测试程序到dll源代码处。


在FileMelp工程里面,右击FileMelp工程,选择属性。

技术分享

或者按Alt+Enter,弹出如下界面。

技术分享

在Configuration Properties\Debugging\Command选择第一步生成的测试.exe文件。这样完成了调试前的准备。接下来,在需要调试的代码地方,添加断点。即可。

注意:

要在Debug的模式下编译生成测试程序的exe文件,也就是说Configuration Properties\Debugging\Command这个路径要填测试程序的Debug目录。同时,DLL程序在加断点运行的时候也要在Debug的模式下,否则断点就会失效。


原文转载地址:

http://my.oschina.net/bubifengyun/blog/111924

http://my.oschina.net/bubifengyun/blog/96252

调试带有源代码的DLL文件

标签:

原文地址:http://www.cnblogs.com/stemon/p/4510971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!