如何调试微控制器卡在哪里?

时间:2019-03-18 07:28:08

标签: c debugging microcontroller atmel

我正在基于atsame70q20的板上工作,我实现了一个非常小的SNMP库,并使用它来从某些控制器中查询某些OID。问题是过了一会儿它在查询OID时卡住,并由于看门狗计时器到期而重新启动。我们正在使用FreeRTOS 7.3.0和LWIP 2.1.0。我不知道如何找出卡住的地方。我放入调试语句以查找确切位置,甚至调试字符串也只是部分打印。我只是想要一些有关如何确定流程去向的指针。

    lwip_sendto(lSocket,(const void *)arr,arr_len,MSG_DONTWAIT,&serverAddr,sizeof(struct sockaddr_in));



debug_puts("Stuck Here2\r\n");
memset(gv_snmpRespData,0, 512);
fd.fd = lSocket; // socket handler
fd.events = POLLIN;
wdt_restart(WDT);
debug_puts("Stuck Here3\r\n");
ret = poll(&fd, 1, 500); // 500 millisecond for timeout
switch (ret) {
    case -1:
    // Error
    nBytes = -1;
    break;
    case 0:
    // Timeout
    nBytes = -1;
    break;
    default:
    nBytes = lwip_recvfrom(lSocket,gv_snmpRespData,512,MSG_WAITALL,NULL,NULL);
    break;
}

*pdu_arr_len = nBytes;

lwip_close(lSocket);

if(nBytes > 0)
    return 0;

return 1;

我被困在Stuck Here3语句上并重新启动。

0 个答案:

没有答案