热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Socket上调试第一次机会异常?-HowdoIdebugthisfirstchanceexceptiononaSocket?

InmyC#WPF.Net4.5programImtryingtodoaDisconnect()onasocketandwhenIdoIgeta在我的C

In my C#/WPF/.Net 4.5 program I'm trying to do a Disconnect() on a socket and when I do I get a

在我的C#/ WPF / .Net 4.5程序中,我正在尝试在套接字上执行Disconnect(),当我这样做时,我得到一个

A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll

System.dll中发生了'System.Net.Sockets.SocketException'类型的第一次机会异常

. . . in the Visual Studio Output window.

。 。 。在Visual Studio输出窗口中。

My code is wrapped in a try/catch but it never lands in the catch . . .

我的代码包含在try / catch中,但它永远不会落入catch中。 。 。

    try
      {
          if (_TCPConn.Connected)
          {
              _TCPConn.Shutdown(SocketShutdown.Both);
              _TCPConn.Disconnect(true);   // SocketException
          }
      }
      catch (Exception e)
      {
   . . . 
      }

Up until this point the Socket works fine - it's used to communicate with some manufacturing machinery and all that stuff works perfectly. I've tried this with and without the Shutdown() with the same results. If I let my program keep running after the first chance exception the whole program just disappears and exits the debugger. Then the message in the Output window just says

到目前为止,Socket工作正常 - 它用于与一些制造机器进行通信,所有这些工作都很完美。我在使用和不使用Shutdown()时尝试了相同的结果。如果我让程序在第一次机会异常后继续运行,整个程序就会消失并退出调试器。然后输出窗口中的消息说

The program '[0xE6C] ProcFacTest.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).

程序'[0xE6C] ProcFacTest.vshost.exe:Managed(v4.0.30319)'已退出,代码为0(0x0)。

How do I figure out what's causing this?

我如何找出导致这种情况的原因?

1 个解决方案

#1


17  

The first step is to disable "Just My Code". This probably shouldn't be necessary but it's possible the IDE is confusing your user code with system code and suppressing the exception as a result. I generally do this when doing exception debugging

第一步是禁用“Just My Code”。这可能不是必需的,但IDE可能会将您的用户代码与系统代码混淆,从而抑制异常。我通常在进行异常调试时执行此操作

  • Tools -> Options -> Debugging
  • 工具 - >选项 - >调试

  • Uncheck "Enable Justy My Code Debugging"
  • 取消选中“启用Justy My Code Debugging”

The next step is to tell Visual Studio to break when that particular exception is thrown.

下一步是告诉Visual Studio在抛出该特定异常时中断。

  • Debug -> Exceptions
  • 调试 - >例外

  • Expand "Common Language Runtime Exceptions" until you reach "System.Net.Sockets.SocketException"
  • 展开“公共语言运行时异常”,直到到达“System.Net.Sockets.SocketException”

  • Check "Thrown" for this exception
  • 检查此“异常”的“Thrown”


推荐阅读
  • 线程漫谈——线程基础
    本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
author-avatar
Evilchrist
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有