【发布时间】:2015-08-03 18:50:55
【问题描述】:
我正在寻找处理一个相当高级问题的具体建议:如何调试软件(Genetic Algorithm,如果您有兴趣):
- 跨多个线程运行任务(我不control which thread runs which task)
- 每个任务的执行取决于随机值(我不control the randomization seed)
- 任务的状态是一个复杂的对象图,无法轻松序列化为人类可读的平面格式
到目前为止,我已经尝试了以下方法:
在调试器中检查单个线程:这是有问题的,因为大多数任务都成功完成(在出现问题之前设置断点会导致许多误报)。另一方面,如果我设置了一个断点,一旦任务处于不良状态就停止,我无法及时退后一步来弄清楚我是如何到达那里的。
转储跟踪日志在理论上很好(一旦发现错误状态,我可以及时退回),但我还没有弄清楚如何将任务的状态序列化为人类可读的平面格式。
在理想情况下,我希望能够为不良状态设置断点,然后使用调试器及时退回以检查我是如何到达这一点的。
您以前遇到过这种问题吗?你是怎么调试的?
【问题讨论】:
标签: java debugging parallel-processing stochastic-process