草庐IT

lldb_injected_self

全部标签

c++ - 在注入(inject)的 DLL 中调用函数?

使用C++,我有一个创建远程进程并向其中注入(inject)DLL的应用程序。有没有办法让远程应用程序从创建它的应用程序执行从DLL导出的函数?是否可以向该函数发送参数?请注意,我试图避免在DllMain中做任何事情。 最佳答案 注意:要获得更好的答案,请seemyupdatepostedbelow!好的,这就是我如何做到这一点的:BOOLRemoteLibraryFunction(HANDLEhProcess,LPCSTRlpModuleName,LPCSTRlpProcName,LPVOIDlpParameters,SIZE_T

单元测试中的 C++ 和依赖注入(inject)

假设我有一个像这样的C++类:classA{public:A(){}voidSetNewB(constB&_b){m_B=_b;}private:Bm_B;}为了对这样的东西进行单元测试,我必须打破A对B的依赖。由于类A持有一个实际对象而不是一个指针,我将不得不重构此代码以获取一个指针。此外,我需要为B创建一个父接口(interface)类,这样我就可以在测试SetNewB时传入我自己的假B。在这种情况下,使用依赖注入(inject)进行单元测试不会使现有代码进一步复杂化吗?如果我将B设为指针,我现在将引入堆分配,并且现在有一段代码负责清理它(除非我使用引用计数指针)。此外,如果B是一

c++ - std::priority_queue<> 什么时候进行 self 排序?

我想知道什么时候C++STLpriority_queue自行排序。我的意思是它insert当你push中的项目,或者当你peek时,它会自行排序并给你最高优先级的项目吗?或pop出来?我问这个是因为我的priority_queue将包含一个可能有值更新的数组的索引,我希望它在我执行pq.top();时更新.#include#include#includeusingnamespacestd;intmain(){priority_queuepq;pq.push(2);pq.push(5);//isthefirstelement5now?orwillitupdateagainwhenItop

c++ - 在注入(inject)的 DLL 中调用函数

我想在我创建的注入(inject)DLL的远程进程中调用一个函数。我已经成功地将我的DLL注入(inject):CreateRemoteThread(pHandle,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32"),"LoadLibraryA"),pLibRemote,0,NULL);DllMain被执行,DLL以待机模式运行。我想做的是以某种方式调用远程加载的DLL以完成一些工作。我试过像这样导出函数:extern"C"__declspec(dllexport)voidMyFunc(vo

c++ - LLDB:如何检查 unordered_map

大多数其他STL容器打印良好,但unordered_map是一个烂摊子。我使用operator用于打印,但这与打印无关,这是关于当我崩溃并且我想从LLDB提示符打印出我的哈希值时。我不能调用类似callcout的东西因为那行不通。除了例如,没有其他解决方案吗?链接本身使用cout的模板函数?那行得通吗?(我正在尝试,但它不起作用,因为我必须提前知道模板参数类型是什么,以便为它们生成和链接代码) 最佳答案 您应该能够检查unordered_map对象本身,而无需对其调用方法。例如,以这个简单的程序为例:#include#include

c++ - 对于测试非虚拟方法,模板或链接接缝依赖注入(inject)有哪些替代方案?

我正在尝试测试对无法更改且通常不使用虚拟方法的代码有很多依赖性的代码。这也是一个高性能场景,所以我可以想象在我们自己的代码中的某些地方我们不想使用虚拟方法。非虚拟方法对测试场景很重要,所以我想模拟它们。据我了解,主要有两种选择:模板依赖注入(inject):谷歌称之为hi-perfdependencyinjection.mock不再是依赖的派生类,取而代之的是模板类。它被实例化为用于生产的原始依赖类和用于测试的模拟类。Linkseams:将测试类命名为与生产类相同的名称,并在链接测试时使用链接器技巧将其替换为生产实现。我已经成功地使用了1.但它很快就会失去控制:我将模板化大部分代码库来

c++ - "method injection"的这种虚拟继承使用模式是已知范例吗?

昨天,我遇到了这个问题:forcingunqualifiednamestobedependentvalues最初,这似乎是一个与破坏VC++行为相关的非常具体的问题,但是在尝试解决它时,我偶然发现了一种我以前从未遇到过的虚拟继承的使用模式(我会在告诉你之后解释一下)我的问题)。我发现它很有趣,所以我在SO和google上寻找它,但我找不到任何东西。也许,我只是不知道它的正确名称(“方法注入(inject)”是我的猜测之一)而且它实际上广为人知。这也是我向社区提出的问题的一部分:这是一种常见的使用模式还是另一种已知范式的特例?您是否看到可以通过不同的解决方案避免的任何问题/陷阱?这个模式

c++ - 依赖注入(inject)库的正确比喻是什么?

我是一个实现依赖注入(inject)的小型C++库的作者(我想有人会称它为“IoC容器”)。我一直认为为图书馆找到一个好的比喻可以在很多方面提供帮助:它简化了库的使用它帮助图书馆的作者找到正确的抽象它是检查设计合理性的指南这是一种为类找到有意义名称的方法等等...现在,在我的库中,我使用了设备/插头比喻:您的类是“设备”,它们的依赖项是“插头”,您可以将插头连接到另一个设备。这是一个代码示例:REGISTERED_CLASS(Foo),publicDevice{...private:Plugbar;...};...catalog.Create("myFoo","Foo");catalo

c++ - 为什么 injected-class-name 有时不被视为类模板中的模板名称?

SourceInthefollowingcases,theinjected-class-nameistreatedasatemplate-nameoftheclasstemplateitself:itisfollowedbyitisusedasatemplateargumentthatcorrespondstoatemplatetemplateparameteritisthefinalidentifierintheelaboratedclassspecifierofafriendclasstemplatedeclaration.所以我尝试检查所有3种情况(另外在基本歧义的情况下,尽管我

c++ - ADL 和 friend 注入(inject)

考虑这段代码:templatestructX{friendvoidf(X*){}};intmain(){f((X*)0);//Error?}编译器似乎非常不同意。(MSVC08/10说不是,GCC根据“C++模板-完整指南”:...itisassumedthatacallinvolvingalookupforfriendsinassociatedclassesactuallycausestheclasstobeinstantiated...AlthoughthiswasclearlyintendedbythosewhowrotetheC++standard,itisnotclearly