草庐IT

中断栈

全部标签

c++ - 在 C++ 的功能 ISA 模拟器上实现陷阱(异常/中断)

我尝试实现功能性ISA模拟器:目标是RISC-V和MIPS。它是一步一步的指令解释器。抽象步骤:while(num_steps){try{take_interrupt();//takependinginterruptsfetch();//fetchinstructionfrommemorydecode();//findhandlertoinstructionexecute();//performinstruction}catch(Trap&e){take_trap(e);//configureappropriatesystemregistersandjumptotrapvector.}

c++ - 为什么 Visual C++ 不在特定函数中命中断点或单步执行?

我有以下内容:classA::FuncA(){...codeFuncB();...code}classA::FuncB(constchar*pText){SelectObject(m_hDC,GetStockObject(SYSTEM_FONT));wglUseFontBitmaps(m_hDC,0,255,1000);glListBase(1000);glCallLists(static_cast(strlen(pText)),GL_UNSIGNED_BYTE,pText);}我可以在FuncA的任何地方设置断点。如果我尝试进入FuncB,它就会越过。它将接受FuncB中的断点,但永

c++ - 如何根据命中的另一个断点添加条件中断?视觉C++

我有一堆经常使用的通用代码,我想深入研究这些代码以处理特定情况下的错误。所以我只想在遇到其他断点时中断一组断点。有没有办法在Visual2005中执行此操作?我正在使用C++代码。谢谢! 最佳答案 请记住,您可以禁用断点-仅禁用第二个断点可能更容易/更高效/更清洁(例如,然后将调试标志添加到您的代码并重新编译),等到第一个断点,然后启用第二个在你的断点窗口中-每次调试时只需点击两次鼠标......:) 关于c++-如何根据命中的另一个断点添加条件中断?视觉C++,我们在StackOver

c++ - 为什么将枚举标记为导出/导入会中断 Doxygen 生成?

使用Doxygen,我偶然发现了这个警告:D://Camera.h:20:warning:documentedsymbol`enumDLLPORTct::CameraCapture::ct::CameraCapture::CamType'wasnotdeclaredordefined.现在我知道为什么Doxygen找不到那个类(命名空间显然是重复的),但我不明白的是它为什么还要搜索它。这个枚举在头文件中,在类定义的正上方,并且发现类很好,它也没有生成那些双命名空间。源代码也可以编译,所以它可能不是导致Doxygen这些问题的语法错误。具体来说,源代码如下所示:#ifdefCT_EXPO

c++ - 未命中断点 - "the module did not load at the default load address"

我正在尝试调试CPPUnitTests,断点设置在作为待测试DLL(C++非托管dll)一部分的文件中。我将CPPunit测试程序进程附加到打开项目的visualstudioIDE,处于native模式(也尝试过托管+native),然后运行测试,但断点根本没有命中。断点似乎没问题(全红点)。我在DebugBuild中构建了所有必要的DLL。我去Debug->Windows->Modules检查测试程序进程是否加载了我正在调试的DLL,它确实加载了,并且SYmbol文件也被加载了,但是DLL的名称中有一个感叹号和当我将鼠标悬停在它上面时,它说“模块没有在默认加载地址加载”。我该如何解决

c++ - 对 WriteFile 的异步调用会导致写入中断吗?

我有一个假设场景,其中文件句柄以异步模式打开,并且一些线程附加到该文件句柄。它们通过将OVERLAPPED结构的Offset和OffsetHigh部分设置为0xFFFFFFFF来追加,如MSDNarticleforWriteFile中所述。我能否在第一次追加完成之前以这样的追加模式发出第二次写入,并期望文件包含第一个追加的全部内容,然后是第二个追加的全部内容?还是我必须等到前一个写入完成后才能发出以下异步写入? 最佳答案 是的。有用。我在一家使用类似方案的公司工作,尽管为了让他们的搜索调用每次都能正常工作,以已知大小(大约2Gb..

c++ - C/C++ 中可中断的命名范围

介绍这个问题来自这个问题:Thenamedloopidiom:dangerous?.对于不想阅读原始问题的人来说,这是关于做这样的事情:named(label1)for(inti=0;i这个新问题是关于“命名循环”习语的改进版本。如果你懒得阅读整篇文章,你可以直接进入这篇文章的“示例”部分,清楚地理解我在说什么。设计缺陷不幸的是,这个问题很快就结束了(后来又重新打开了),因为它更像是一个利弊辩论,而不是一个纯粹的技术问题。似乎它不适合SOQ&A格式。此外,我提供的代码有几个缺陷:关键词break由宏重新定义宏是用小写字母写的它使一些可怕的东西可以编译(至少使用MSVC):intfoo(

c++ - 让 Visual Studio 中断用户(std::exception)异常?

我的代码抛出未处理的异常,但VisualStudio中的调试器只中断系统抛出的异常。例如,getaddrinfo的返回值不为零,我的异常应该首先抛出-事实上,如果我在第171行放置一个断点,它会被命中-但调试器只在调用socket时中断。我知道Ihavetoaddmyowntypesexplicitly,orelsecheckAllC++Exceptionsnotinthislist,在ExceptionSettings中,但这是我抛出的std::exception,而std::exception是检查过。如何让VisualStudio调试器在出现异常时自动中断?

c++ - 如何使用 boost::asio 从网络中断中恢复

我正在编写一个从设备接收数据并处理它的服务器。一切正常,除非网络中断(即,如果我拔下以太网电缆,然后重新连接)。我使用read_until()是因为设备使用的协议(protocol)以特定的字节序列终止数据包。当数据流中断时,read_until()会按预期阻塞。但是,当流再次启动时,它仍然处于阻塞状态。如果我使用Wireshark查看数据流,设备将继续传输并且每个数据包都被网络堆栈确认。但是,如果我查看bytes_readable,它始终为0。如何检测中断以及如何重新建立与数据流的连接?下面是一个代码片段,在此先感谢您提供的任何帮助。[放轻松,这是我的第一个StackOverflow

c++ - 带中断的互斥安全(嵌入式固件)

编辑@Mike指出我下面代码中的try_lock函数是不安全的,并且访问器创建也会产生竞争条件。(来自每个人的)建议使我确信我走上了错误的道路。原始问题嵌入式微Controller上的锁定要求与多线程不同,我无法将多线程示例转换为我的嵌入式应用程序。通常我没有任何类型的操作系统或线程,只有main以及硬件定期调用的任何中断函数。我需要从中断中填充缓冲区是很常见的,但在main中处理它是很常见的。.我创建了IrqMutex下面的类来尝试安全地实现这一点。每个试图访问缓冲区的人都通过IrqMutexAccessor被分配了一个唯一的ID。,那么他们每个人都可以try_lock()和unlo