`
swimmer2000
  • 浏览: 37864 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

多线程里的OutputDebugString

阅读更多

早就有人说过,调试多线程程序是挑战。今天我才算是对这句话有个比较深入的了解。事情这样的:我的程序有一个工作线程不停的读取USB口上传的数据,然后将读到的数据导出到文本文件。用户反映导出的数据有部分丢失,于是我就修改读取数据的方式,并在收到数据的时候做了前后两笔数据ID是否连续的判断,还把数据通过OutputDebugString输出到VC6的Debug输出窗口。奇怪的是,每当我调整VC IDE左边的Workspace窗口的大小后,ID就不连续了,用BusHound抓到的数据ID是连续的啊!

 

然后我猜测,这都是因为OutputDebugString这个函数惹的祸,调整Workspace窗口大小后,VC的Debug输出窗口也要重画嘛,既然是重画,就需要时间,而在等待重画的这段时间内,USB口上传的数据就像手中沙一样随时间流失了。So,虽然OutputDebugString简单方便,但也不是完全无毒无副作用。

分享到:
评论

相关推荐

    C++ 输出调试信息和所用时间长度 outputdebugstring

    使用outputdebugstring输出调试信息,支持 流操作符 支持时间统计,极短只有十来行。codeproject上有相同功能的实现,几百上千行呢。真不知道作者是在干什么,练手吗?不像是要解决问题的杨紫。

    debugView 全局查看 Outputdebugstring

    debugView则作为一个独立的应用程序,可以在不附加到特定进程的情况下捕获这些调试字符串,这对于多线程或者跨进程的调试特别有用。 **描述详解:** "在调试程序时,可以用OutputDebugString 来调试,不需要下断点...

    Windows多线程(源码)

    在Windows操作系统中,多线程是一种并发编程技术,允许程序同时执行多个独立的执行路径,以提高系统的资源利用率和响应速度。本资源提供的是Windows多线程编程的源代码示例,通过分析和理解这些源码,我们可以深入...

    操作系统课程设计报告--基于Windows进程互斥实现机制.doc

    本报告是关于基于Windows操作系统的进程互斥实现机制的课程设计报告,旨在验证多线程编程中关键元素的定义与使用,并通过使用Semaphore、Mutex等控制元素,实现对生产者消费者模型的真实模拟。 一、多线程编程的...

    操作系统实习3-1

    6. **调试与输出**:`OutputDebugString`函数可以在调试器中显示字符串,这对于调试多线程程序非常有用。如果你选择在控制台输出,可以使用`WriteFile`函数将信息写入标准输出设备。 7. **北京大学操作系统课程**:...

    Debug监视器

    5. **系统集成测试**:在多进程或多线程环境中,通过Debug监视器收集各个组件的调试信息,便于排查跨进程或跨线程的问题。 使用Debug Monitor App.exe和DebugMonitorApp.hlp,开发者可以快速启动这个监视器,开始...

    MyOutputDebugString接收器源码

    4. **线程同步**:由于多线程环境下的并发问题,我们需要确保在处理调试信息时的线程安全。可以使用互斥量(Mutex)或信号量(Semaphore)来协调各个线程的访问。 5. **异常处理**:考虑到程序可能会出现异常情况,...

    delphi线程例子

    OutputDebugString('线程正在运行'); end; end. ``` 2. **启动线程**: 在主线程中,我们可以创建`TMyThread`的实例并调用`Start`方法来启动线程: ```delphi var MyThread: TMyThread; begin MyThread := ...

    debugview c++ 跟踪代码

    5. **多线程支持**:DebugView可以区分不同线程产生的调试信息,这对于多线程应用的调试非常有用。 6. **远程调试**:通过网络,DebugView可以连接到远程计算机,收集其调试输出,这对于分布式系统的调试提供了便利...

    实现delphi的debugprint

    5. **多线程安全**:在多线程环境下,`DebugPrint`需要确保其操作是线程安全的,避免因并发输出导致的数据混乱。 6. **日志文件记录**:除了输出到调试器,`DebugPrint`可能还提供了将调试信息写入日志文件的功能,...

    DebugView调试工具

    使用DebugView,开发者可以实时监控多个进程的调试输出,这对于排查多线程或多进程问题特别有用。它支持捕获本地和远程计算机的调试信息,这在处理分布式系统或网络服务时非常有价值。 DebugView的主要功能包括: ...

    DebugView 调试日志工具

    - **多线程支持**:DebugView可以区分不同线程产生的调试信息,这对于多线程编程的调试尤其有用。 - **同步模式**:在同步模式下,DebugView会等待调试消息处理完毕再继续处理其他消息,这有助于避免调试信息的...

    debug view

    2. **多线程支持**:Debug View可以区分来自不同线程的输出,这对于处理多线程程序的问题尤为有用。 3. **过滤功能**:用户可以根据关键字或正则表达式对输出进行过滤,这有助于专注于与当前问题相关的特定信息。 ...

    DebugView32

    5. 多线程支持:即使在多线程环境下,DebugView32也能准确地按线程分类和显示调试信息,有助于理清复杂的执行流程。 在压缩包中的"DebugView32"文件,应是DebugView32的安装或可执行文件。安装或解压后,双击即可...

    消费者生产者问题操作系统课程设计

    操作系统课程设计中的“消费者-生产者问题”是一个经典的多线程同步问题,它模拟了实际生产环境中的资源分配与消耗情况。在这个问题中,我们有生产者线程负责生成产品,而消费者线程则负责消费这些产品。资源池(如...

    HotLog 源代码

    我自己用得最多最顺手的 Log 工具。把这份PAS单元文件加入到你的工程里,随时可以写LOG。尤其是多线程情况下很难用断点跟踪时。个人感觉比 OutputDebugString 好用。

    DbgView调试信息查看器

    6. **多线程支持**:DbgView能区分来自不同线程的调试信息,这对于多线程应用的调试至关重要。 7. **系统范围**:DbgView可以捕获整个系统的调试信息,包括系统服务和驱动程序的调试输出,这对于底层问题的排查特别...

    5.2 调试支持--------------

    8. **多线程调试**:随着多核处理器的普及,多线程编程成为常态。调试多线程代码需要理解线程同步机制,如互斥量、条件变量和信号量,以及如何在调试器中查看线程状态。 总之,调试C++代码需要综合运用多种技术和...

    易语言API扩展文本输出源码.7z

    6. **多线程安全**:如果API扩展用于多线程环境,还需要考虑线程同步问题,防止因并发访问导致的数据冲突。 通过学习和理解这些API扩展源码,开发者不仅可以掌握易语言调用API的基本方法,还能深入了解Windows系统...

    Dbgview 显示windows下的软件打印

    - **多线程支持**: Dbgview能区分来自不同线程的消息,便于理解多线程程序的行为。 - **颜色标记**: 可以设置不同颜色来标识不同级别的消息,如错误、警告和信息。 2. **Dbgview与Windows打印**: 在Windows环境...

Global site tag (gtag.js) - Google Analytics