如何调试动态加载的DLL

guazhiguazhi 2011-10-07 08:34:43
大家好

我有一个firefox的插件需要调试,VS2008编译的,但是这个插件是通过网页的标签动态加载的。
按照通常的方法制定调试程序后就是一连串的退出输出:
/**************************************************
'CrBrowserMain' (0xa3c) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x6bc) 已退出,返回值为 0 (0x0)。
**************************************************/

小弟菜鸟,请教一下该如何调试这种动态加载的DLL呢
求知道的大哥赐教
...全文
323 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
guazhiguazhi 2011-10-08
  • 打赏
  • 举报
回复
好了 楼上各位的回答非常的感谢。然后 我已经知道怎样调了
我这里是这样子的:打开VS项目 然后打开CHROME 打开网页加载插件 跳出内存错误
选择取消 然后再选择可能的调试器为当前的项目 就能够跟踪到出错的源码了

再次谢谢给予帮助的朋友们 祝福你们 ^ ^
guazhiguazhi 2011-10-07
  • 打赏
  • 举报
回复

之前也试了 没反应。
开了firefox 附加 然后打开启动插件的页面 在然后点击页面中调用插件函数的JS 在插件被调用的函数那里设置了断点 但是VS丝毫没有反应,是不是还要设置哪里什么的啊

[Quote=引用 8 楼 chiyer 的回复:]

运行firefox后vs 直接attach上去

菜单->Tools->Attach to process
[/Quote]
星羽 2011-10-07
  • 打赏
  • 举报
回复
运行firefox后vs 直接attach上去

菜单->Tools->Attach to process
qq120848369 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wanerf3 的回复:]
第二个办法能具体么。不好意思啊,我懂的实在不多。

引用 5 楼 aizibion 的回复:

老实办法:
先将动态DLL编译为静态lib,然后调试,调试完成再改为动态DLL
巧妙办法:
编译DEBUG版本的DLL,并在工程中添加DLL源码路径,不过需要注意DLL与源码同步。
[/Quote]

学习了。
guazhiguazhi 2011-10-07
  • 打赏
  • 举报
回复

第二个办法能具体么。不好意思啊,我懂的实在不多。

[Quote=引用 5 楼 aizibion 的回复:]

老实办法:
先将动态DLL编译为静态lib,然后调试,调试完成再改为动态DLL
巧妙办法:
编译DEBUG版本的DLL,并在工程中添加DLL源码路径,不过需要注意DLL与源码同步。
[/Quote]
aizibion 2011-10-07
  • 打赏
  • 举报
回复
老实办法:
先将动态DLL编译为静态lib,然后调试,调试完成再改为动态DLL
巧妙办法:
编译DEBUG版本的DLL,并在工程中添加DLL源码路径,不过需要注意DLL与源码同步。
guazhiguazhi 2011-10-07
  • 打赏
  • 举报
回复

恩 我就是下载编译了这个DLL ,在FIREFOX中能够正常运行,但是在CHROME中加载就崩溃了
所以想尝试着调试,我在这里看到他们的移植结果http://www.firefox.net.cn/forum/viewtopic.php?t=37032
注释掉一行代码就好了

[Quote=引用 3 楼 dizuo 的回复:]

调试dll需要有源代码啊,
[/Quote]
ryfdizuo 2011-10-07
  • 打赏
  • 举报
回复
调试dll需要有源代码啊,
guazhiguazhi 2011-10-07
  • 打赏
  • 举报
回复

大哥你好,我比较菜啊 ,配置文件 和那个map映射都还没有接触过
事实上我才开始学习编译firefox的插件实例程序npruntime ,它能在FIREFOX正常运行
但是在chrome上边崩溃了。 我想追踪到崩溃的那句代码。我在别的地方看到他们将某一句代码注释掉就好了
我试着注释掉那句代码依旧崩溃。
然后就是您能够说的比较详细点吗。菜鸟起航,还望多多指点

[Quote=引用 1 楼 qq120848369 的回复:]

很简单的。。。

配置文件里这样写:

标签 DLL路径 函数名


程序启动以后读文件,做map<标签,pair<DLL路径,函数名>>的映射。

以后启动插件的时候,loadlibrary加载某个标签对应的DLL,找到DLL里的“函数名”。就可以用那个函数指针操作了。
[/Quote]
qq120848369 2011-10-07
  • 打赏
  • 举报
回复
很简单的。。。

配置文件里这样写:

标签 DLL路径 函数名


程序启动以后读文件,做map<标签,pair<DLL路径,函数名>>的映射。

以后启动插件的时候,loadlibrary加载某个标签对应的DLL,找到DLL里的“函数名”。就可以用那个函数指针操作了。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧