草庐IT

debug_release

全部标签

c++ - C++动态Release库和Debug库有什么区别?

我有一个与C++动态库相关的问题。通常C++动态库由一个.lib文件和一个.dll文件组成。如果我理解得很好,.lib文件记录导出函数的位置,而.dll包含实现。我知道发布版本有一些优化,因此发布dll和调试dll应该不同。那么发布lib文件和调试lib文件的主要区别是什么?有没有办法告诉lib(或dll)文件是发布版本还是调试版本?如果发布版本程序调用调试版本库会发生什么?谢谢! 最佳答案 请注意,“Release”和“Debug”只是一整套编译器和链接器标志和设置的标签,通常内部“Release”构建仍会生成调试信息,但会有更高

windows - 如何理解acquire和release语义?

我从MSDN中找到了三个函数,如下:1.InterlockedDecrement().2.InterlockedDecrementAcquire().3.InterlockedDecrementRelease().我知道那些函数用来递减一个值作为原子操作,但我不知道这三个函数之间的区别 最佳答案 (um...butdon'taskmewhatdoesitmeanexactly)我会尝试一下。需要记住的是,编译器或CPU本身可能会重新排序内存读写,如果它们似乎没有相互处理的话。这很有用,例如,如果您有一些代码可能正在更新结构:if(p

Windows 内核调试 : Debug over virtual serial port with WDK 8. 1

我目前在从我的Windows8.1x64主机上对Windows7x64目标进行内核调试时遇到一些问题。我在我的主机上运行带有WDK8.1的VisualStudio2013,并配置了在VMWare中运行的目标机器。这是我对目标机器的配置。它的配置主要是从这里阅读-http://www.codeproject.com/Tips/545835/Kernel-Mode-Debugging-in-a-VM-using-Visual-Studio:Windows7x64VMWare的串行端口COM2,名称为\\.\pipe\com2。检查VMWare中的所有正确选项通过msconfig启用操作系统

windows - 在内核 Debug模式下连接到目标机器时无法中断

我正在启动一个包含Windows微过滤器的原型(prototype)。我已经设置了我的环境:目标虚拟机(实际上是3个:Windows7、8和8.1)主机开发机器(托管VisualStudio2013和HyperV虚拟机)我终于设法将测试微过滤器部署到目标机器上,但我的问题是:我无法破解目标机器中的内核。当我构建并从VisualStudio调试器启动时,结果如下:------------------------------------------------------------------------------------------------------------------

c++ - COM (C++) Interlock API 是否足以保证 AddRef 和 Release 中的线程安全?

我知道在COM对象的AddRef和Release方法内部使用互锁API来递增/递减线程安全的引用计数。但我想在这里理解的是,是否足够使用InterlockAPI,或者我们还需要某种其他同步对象,例如互斥体。到目前为止,我看到的所有示例代码都只使用了InterlockAPI。场景-假设我已经实现了消息对象的AddRef和Release方法,如下所示。假设线程A访问消息对象,因此m_lRef计数为1。一旦完成消息对象使用线程A调用Release方法内部释放方法–在第9行-m_lRef=1在第10行-m_lRef=0,lRef=0线程A在第10行暂停,另一个线程B访问相同的消息,因此它调用A

c++ - 为什么这个 COM IUnknown::Release 的实现有效?

从例子中我看到COMIUnknown::Release()函数实现是这样的:ULONGRelease(){InterlockedDecrement(&m_count);if(m_count==0){deletethis;}returnm_count;}因此,如果m_count为0,那么我们将删除“this”对象,并返回引用计数。我不明白的是为什么它有效?!?!删除对象不会破坏调用堆栈,或者因为它被线程占用,所以它与对象无关吗???如果对象被删除了,怎么可能返回m_count,应该是被删除了。我本可以说服自己,如果删除后代码返回硬编码0没关系,但它怎么会返回成员?!?!非常感谢您的帮助!

ruby-on-rails - 无法在 Windows 上安装 ruby​​-debug gem

我在Windows上安装Ruby-DebugGem时遇到问题。这个错误是什么意思?我怎样才能解决这个问题?谢谢C:\Users\Steve>geminstallruby-debugBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingruby-debug:ERROR:Failedtobuildgemnativeextension.C:/Ruby19/bin/ruby.exeextconf.rbCan'thandle1.9.xyet***extconf.rbfailed***CouldnotcreateMa

windows - mfc 应用程序中的 "binary was not built with debug information "警告含义?

当我在Windows7中运行我的Windows应用程序(MFC)时,我收到以下警告。“XXX.exe”:已加载“C:\2010\Debug\bin\plugins\control\libhotkeys_plugin.dll”,二进制文件未使用调试信息构建。请帮帮我,谢谢 最佳答案 您的二进制文件似乎是在Release模式下构建的现在有两种方法可以遵循......使用“调试”配置构建二进制文件更改项目设置,以便在Release模式下生成程序数据库文件(PDB)。现在您可以从属性窗口生成PDB...

debugging - Redis RDB 备份因 RAM 使用率过高而失败

我注意到有几次,redis无法在大约50%以上的已用RAM上执行RDB备份,一旦我关闭一些消耗大量RAM的进程,它就会重新开始工作。例如,它无法在39GB已用RAM上进行备份,但在25GB上一切正常。服务器总RAM为64GB我如何调试正在发生的事情? 最佳答案 看看http://redis.io/topics/faq#background-saving-is-failing-with-a-fork-error-under-linux-even-if-i39ve-a-lot-of-free-ram如果您不更改该设置,您需要大约两倍于数

node.js - ioredis (nodejs) : Debugging custom command with lua script

我写了一个自定义的lua脚本,这样我就可以在我的Node进程中从ioredis运行它:REDIS_CLIENT.defineCommand('my_command',{lua:fs.readFileSync(path.resolve(__dirname,'./lua_scripts/my_command.lua'),{encoding:'utf8'})});我想在我的my_commands.lua中添加打印,所以当我运行client.my_command(args)时,它将被打印到nodejs进程stdout但当我添加print"hellolua"时它没有(这是有道理的)。有没有办法将