我正在调试一个并行代码。我得到错误指示索引超出范围在一些Map对象。错误消息显示:
**terminate called after throwing an instance of 'std::out_of_range'**
**what(): \_Map_base::at**
字符串
我试过valgrind,它不能给予我确切的路线错误发生的地方。我也试过GDB。没有消息打印出来。
Valgrind消息说:
==7282== Conditional jump or move depends on uninitialised value(s)
==7282== at 0x140A17: PMIU_cmd_output (in /home/system/mpich-install-4.1.1/bin/mpiexec.hydra)
==7282== by 0x12909D: HYD_pmcd_pmi_send (pmiserv_common.c:49)
==7282== by 0x1221BF: HYD_pmiserv_pmi_reply (pmiserv_pmi.c:28)
==7282== by 0x11EE55: HYD_pmiserv_barrier (pmiserv_misc.c:32)
==7282== by 0x11F9A8: handle_pmi_cmd (pmiserv_cb.c:95)
==7282== by 0x121702: control_cb (pmiserv_cb.c:337)
==7282== by 0x137818: HYDT_dmxu_poll_wait_for_event (demux_poll.c:75)
==7282== by 0x12362B: HYD_pmci_wait_for_completion (pmiserv_pmci.c:178)
==7282== by 0x11099A: main (mpiexec.c:246)
==7282== Uninitialised value was created by a stack allocation
==7282== at 0x11EDA4: HYD_pmiserv_barrier (pmiserv_misc.c:15)
型
我想知道是否有任何工具可以帮助我处理这样的问题?
1条答案
按热度按时间bvhaajcl1#
看看这里的代码
字符串
然后找出需要做什么来初始化它。