相关疑难解决方法(0)

如果你无法解决错误,你会怎么做?

你的代码中有没有错误,你无法解决?我希望我不是那里唯一一个有这种经历的人......

存在一些类别的错误,很难追查:

  • 与时序相关的错误(例如,在进程间通信期间发生)
  • 与内存相关的错误(大多数人都知道适当的例子,我猜!!!)
  • 与事件相关的错误(难以调试,因为您遇到的每个断点都会使您的IDE成为鼠标释放/焦点事件的目标......)
  • 依赖于操作系统的错误
  • 硬件相关的错误(发生在发布机器上,但不发生在开发人员机器上)
  • ...

说实话,我不时自己修复这样的错误......经过几个小时(有时甚至是几天)的调试后,我觉得非常士气低落.

在这种情况下你做了什么(除了向别人寻求帮助之外并不总是可行的)?

你呢

  • 使用铅笔和纸而不是调试器
  • 面对另一件事,稍后再回到这个bug
  • ...

请告诉我!

debugging

33
推荐指数
6
解决办法
7773
查看次数

你如何处理间歇性的错误?

脚本

你有几个错误报告都显示同样的问题.他们都是神秘的,有关问题如何发生的类似故事.您按照步骤操作但不能可靠地重现问题.经过一些调查和网络搜索,你怀疑可能会发生什么,你很确定你可以解决它.

问题

遗憾的是,如果没有可靠的方法来重现原始问题,您无法验证它是否真正解决了问题,而不是完全没有任何影响或加剧和掩盖真正的问题.您可能无法修复它,直到它每次都可重现,但这是一个很大的错误而不修复它会导致您的用户出现很多其他问题.

你如何验证你的变化?

我认为对于任何设计软件的人来说,这是一个非常熟悉的场景,所以我确信有很多方法和最佳实践来解决这样的错误.我们目前正在研究我们项目中的其中一个问题,我花了一些时间来确定问题,但无法证实我的怀疑.一位同事正在测试我的修复,希望"没有崩溃的一天运行"等同于"它是固定的".但是,我更喜欢更可靠的方法,我认为这里有丰富的经验.

debugging validation

33
推荐指数
4
解决办法
7637
查看次数

什么会导致UDP数据包被发送到localhost时被丢弃?

我正在发送非常大(64000字节)的数据报.我意识到MTU远小于64000字节(典型值大约是1500字节,来自我的阅读),但我怀疑会发生两件事之一 - 要么没有数据报就能通过(所有大于1500字节)会被静默删除或导致抛出错误/异常)或64000字节数据报将被分成大约43个1500字节的消息并透明地传输.

从长远来看(2000 + 64000字节数据报),数据报的大约1%(即使是LAN似乎异常高)也会被丢弃.我可能期望通过网络,数据报可能无序到达,被丢弃,过滤等等.但是,在localhost上运行时我没想到这一点.

是什么导致无法在本地发送/接收数据?我意识到UDP是不可靠的,但我没想到它在localhost上如此不可靠.我想知道它是否只是一个时间问题,因为发送和接收组件都在同一台机器上.

为了完整起见,我已经包含了发送/接收数据报的代码.

发送:

DatagramSocket socket = new DatagramSocket(senderPort);

int valueToSend = 0;

while (valueToSend < valuesToSend || valuesToSend == -1) {
    byte[] intBytes = intToBytes(valueToSend);

    byte[] buffer = new byte[bufferSize - 4];

     //this makes sure that the data is put into an array of the size we want to send
    byte[] bytesToSend = concatAll(intBytes, buffer);

    System.out.println("Sending " + valueToSend + " as " + bytesToSend.length + " bytes");

    DatagramPacket packet = new DatagramPacket(bytesToSend,
                        bufferSize, …
Run Code Online (Sandbox Code Playgroud)

java udp network-programming

21
推荐指数
1
解决办法
3万
查看次数

标签 统计

debugging ×2

java ×1

network-programming ×1

udp ×1

validation ×1