debugging 用valgrind调试并行代码中的内存泄漏问题

kokeuurv  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在调试一个并行代码。我得到错误指示索引超出范围在一些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)


我想知道是否有任何工具可以帮助我处理这样的问题?

bvhaajcl

bvhaajcl1#

看看这里的代码

==7282==  Uninitialised value was created by a stack allocation
==7282==    at 0x11EDA4: HYD_pmiserv_barrier (pmiserv_misc.c:15)

字符串
然后找出需要做什么来初始化它。

相关问题