c – 断点当前不会受到打击.没有与此行相关联的可执行代码
我在.h文件中有一个类:
class Blah { public: Blah(){} virtual ~Blah(){} void WriteMessage( bool MessageReceived ) { if(MessageReceived) { cout << "Message Recievedn"; } } }; 我试图弄清楚为什么我的代码不工作,所以我在WriteMessage()函数的条件内设置一个断点,但是一旦我在调试模式下开始运行项目,断点就会消失,并且它的工具提示说过:
我不知道为什么会发生这种情况,因为在.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 Receivedn"); //////////////////////////////////////////////////////////////////////// ////////// 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文件与应用程序正在运行的代码不同>应用程序正在运行的代码已被优化,调试信息已被删除.>您有断点的代码尚未加载到进程中 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Open Flash Chart 遮住div的问题解决
- Cocos2D-Android-1之源码详解:5.Box2dTest
- 读取xml配置文件
- TDD再思考----优势、不足与改进
- 高效使用flash的技巧
- C`std :: string`-like容器,带有4字节对齐的缓冲区
- ruby-on-rails – 使用Rails和Capistrano部署在EC2上进行自
- c# – System.ObjectDisposedException:无法访问已关闭的S
- An exceptionCaught() event was fired, and it reached at
- Metasploit CVE-2015-5122 Flash漏洞利用检测试验