
GDB 之在线调试与 Coredump 分析
这里以一个简单的例子来逐一描述使用方法,例子是自己模拟的一个 native crash。
例子描述:
这里在 wifi 连接热点时,模拟了一个 native crash。 在 wpa_supplicant 的命令接受总接口函数
wpa_supplicant_ctrl_iface_process 中做如下改动:
char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
char *buf, size_t *resp_len)
{
...
} else if (os_strcmp(buf, "ADD_NETWORK") == 0) {
char err_reply[2];
reply_len = wpa_supplicant_ctrl_iface_add_network(
wpa_s,err_reply, reply_size);
原来是这样的
reply = os_malloc(reply_size);
...
} else if (os_strcmp(buf, "ADD_NETWORK") == 0) {
reply_len = wpa_supplicant_ctrl_iface_add_network(
wpa_s, reply, reply_size);
这里本来 reply 长度是 4096,现在给改成 2 个字节长度的字符数组,在后面操作时当然会出问题了。会出什么
现象呢?看截图:
评论0