debugging 如何在套接字端口上创建条件断点?

42fyovps  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(113)

我正在开发一个C#应用程序,使用TCP套接字。为了做到这一点,有以下几行源代码:

using System.Net.Sockets;
...
var sock = (Socket)ar.AsyncState;
...
if (sock.Connected)
...

对于TCP端口等于123情况,我希望在最后一行有一个条件断点。
为了实现这一点,我在watch窗口中输入了sock,并进一步查找端口。一旦找到,我做“添加watch”,watch窗口中会出现以下内容:

((System.Net.IPEndPoint)sock.RemoteEndPoint).Port

因此,我决定使用以下代码作为条件断点的入口:

Conditional Expression
Is true 
((System.Net.IPEndPoint)sock.RemoteEndPoint).Port == 123

但是,这会产生以下错误消息:
断点错误:无法执行中断点的条件。条件为'((System.Net.IPEndPoint)sock.RemoteEndPoint).Port == 123'。传回的错误为'方法System.Net.Sockets.Socket.get_RemoteEndPoint()的评估呼叫原生方法Interop+Sys.SetAddressFamily(byte*,int,int)。不支援此内容中原生方法的评估。'。按一下[确定]在此中断点停止。
如何为该值创建条件断点?

rjee0c15

rjee0c151#

你试过int tmpPort=((System.Net.IPEndPoint)sock.RemoteEndPoint).Port;
然后补充一句:

Conditional Expression
Is true
tmpPort == 123

但是,正如canton7所说,我们更倾向于用一个if,然后在里面加一个breakpoint,或者用Debugger.Break()来达到效果。

相关问题