c – 断点当前不会受到打击.没有与此行相关联的可执行代码

c – 断点当前不会受到打击.没有与此行相关联的可执行代码,第1张

概述我在.h文件中有一个类: class Blah{public: Blah(){} virtual ~Blah(){} void WriteMessage( bool MessageReceived ) { if(MessageReceived) { cout << "Message Recieved\n" 我在.h文件中有一个类:
class Blah{public:    Blah(){}    virtual ~Blah(){}    voID WriteMessage( bool MessageReceived )    {        if(MessageReceived)        {            cout << "Message RecIEved\n";        }    }};

我试图弄清楚为什么我的代码不工作,所以我在WriteMessage()函数的条件内设置一个断点,但是一旦我在调试模式下开始运行项目,断点就会消失,并且它的工具提示说过:

Breakpoint will not currently be hit.
No executable code associated with this line.

我不知道为什么会发生这种情况,因为在.h文件中实现时,其他类的所有其他成员函数都可以正常工作.是什么原因造成的?

编辑:好的,根据要求,这里是我正在使用的真实代码的精简版本:

VimbaBrIDgeAPI.h(.dll的头文件)

#pragma once#ifdef VIMBABRIDGEAPI_EXPORTS#define VIMBABRIDGEAPI_API __declspec(dllexport)#else#define VIMBABRIDGEAPI_API __declspec(dllimport)#endif#include "AlCamIncludes.h"#include "VimbaSystem.h"//////////////////////////////////////////////  Global Variables ///////////////////////////////////////////////////////////////////extern HBITMAP hbit;extern CEdit* global_filenamehandle;//////////////////////////////////////////////  Global Flags ///////////////////////////////////////////////////////////////////////extern bool imageReady;extern bool take_picture;using namespace AVT::VmbAPI;VIMBABRIDGEAPI_API voID BrIDgedGetimage(FramePtr framepoint,VmbUchar_t** imgDat);VIMBABRIDGEAPI_API HBITMAP ExternalFrameRecIEved( const FramePtr pFrame );////////////////////////////////////////////////////////////////////////////////////  MyObserver class   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////class VIMBABRIDGEAPI_API MyObserver : public iframeObserver{private:    MyObserver( MyObserver& );    MyObserver& operator=( const MyObserver& );    //class member variables    //BITMAPINFO*             pbmi;    CEdit*                  m_filenameedit;public:    MyObserver(CameraPtr pCamera) : iframeObserver(pCamera) {}    virtual ~MyObserver() {}    voID FrameReceived ( const FramePtr pFrame );};

注意:iframeObserver不是由我写的,但FrameReceived函数是在iframeObserver类中声明的纯虚拟的.他们的文档说,FrameRecIEved每当框架进入时都会被API调用,我不得不实现该功能.我已经测试了这个功能,它的工作原理,但只有当定义在类之外(内部我得到我现在得到的错误)

VimbaBrIDgeAPI.cpp(用户隐藏的代码)

voID FrameRecIEved( const FramePtr pFrame ){    DbgMsg(L"Frame Received\n");    ////////////////////////////////////////////////////////////////////////    //////////  Setup Bitmap  ////////////////////////////////////////////////    //////////////////////////////////////////////////////////////////////////    //// fileheader ////    BITMAPfileheader* bf = new BITMAPfileheader;    bf->bfType = 0x4d42;    bf->bfSize = 6054400 + 54 + sizeof(BITMAPINFO);    bf->bfOffBits = 54;    //// INFOheader ////    BITMAPINFOheader* bih = new BITMAPINFOheader;    bih->biSize = 40;    bih->biWIDth = 2752;    bih->biHeight = -2200;    bih->biPlanes = 1;    bih->biBitCount = 32;    bih->biCompression = 0;    //bi->biSizeImage = 6054400; //not required    bih->biXPelsPerMeter = 2835;    bih->biYPelsPerMeter = 2835;    bih->biClrUsed = 0;    bih->biClrimportant = 0;    //// INFO ////    BITMAPINFO* pbmi = (BITMAPINFO*)alloca( sizeof(BITMAPINFOheader) + sizeof(RGBQUAD)*256);    pbmi->bmiheader.biSize = sizeof (pbmi->bmiheader);    pbmi->bmiheader.biWIDth = 2752;    pbmi->bmiheader.biHeight = -2200;    pbmi->bmiheader.biPlanes = 1;    pbmi->bmiheader.biBitCount = 8;    pbmi->bmiheader.biCompression = BI_RGB;    pbmi->bmiheader.biSizeImage = 0;    pbmi->bmiheader.biXPelsPerMeter = 14173;    pbmi->bmiheader.biYPelsPerMeter = 14173;    pbmi->bmiheader.biClrUsed = 0;    pbmi->bmiheader.biClrimportant = 0;    //create grayscale color palette    for(int i=0; i<256; i++)    {        pbmi->bmicolors[i].rgbRed = BYTE(i);        pbmi->bmicolors[i].rgbGreen = BYTE(i);        pbmi->bmicolors[i].rgbBlue = BYTE(i);        pbmi->bmicolors[i].rgbReserved = BYTE(0);    }    //// IMAGE DATA ////    VmbUchar_t* imageData = NulL;    BrIDgedGetimage(pFrame,&imageData);    //////////////////////////////////////////////////////////////////////////    ////// Create image that's printed to dialog Box /////////////////////////    //////////////////////////////////////////////////////////////////////////    HDC hdc = ::GetDC(NulL);      hbit = CreateDIBitmap(hdc,bih,CBM_INIT,imageData,pbmi,DIB_RGB_colorS);    //clean up    DeleteObject(bf);    DeleteObject(bih);    DeleteObject(hdc);}
解决方法 我建议您先删除输出文件:物理删除所有生成的DLL,PDB和EXE.然后再次编译(重建)生成文件.有时Visual Studio可以在构建解决方案时“丢失”和“忘记”覆盖输出文件.

这可能是由于以下几个原因:

>调试器使用的代码与应用程序正在运行的代码不同>调试器使用的pdb文件与应用程序正在运行的代码不同>应用程序正在运行的代码已被优化,调试信息已被删除.>您有断点的代码尚未加载到进程中

总结

以上是内存溢出为你收集整理的c – 断点当前不会受到打击.没有与此行相关联的可执行代码全部内容,希望文章能够帮你解决c – 断点当前不会受到打击.没有与此行相关联的可执行代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254267.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存