我正在开发一个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)。不支援此内容中原生方法的评估。'。按一下[确定]在此中断点停止。
如何为该值创建条件断点?
1条答案
按热度按时间rjee0c151#
你试过
int tmpPort=((System.Net.IPEndPoint)sock.RemoteEndPoint).Port;
吗然后补充一句:
但是,正如canton7所说,我们更倾向于用一个
if
,然后在里面加一个breakpoint
,或者用Debugger.Break()
来达到效果。