tcp报文莫名其妙丢弃的调试

  这段时间 tcp 本地lo 接口进程间通信 总是出现 tcp 三次握手 失败!! 同时前段时间驱动以及Tcp/ip 协议栈出现问题

  那怎样调试呢?目前 一般都是ftrace kprobe 

在使用kprobe 过程中发现,kprobe 是对每条指令都可以hook,如果hook 每个函数的时候, 想知道被hook的这个函数传入的参数 以及值,但是kprobe 没有明确说明其参数回放在那个位置!!

google 了一下 也就只有使用jprobe了!!!

使用例子可以参考:内核samples/kprobes 目录;

hook:ip_finish_output2 打印其堆栈以及skb 相关信息如下;

 可知 syn报文发出后 进入协议栈lo 最后进入ip_finish_output逻辑, 发现其 不是按照自己改动后的协议栈逻辑走的!! 

很快就找到了异常逻辑点! 分析其逻辑代码去!!!!!

PS:今天debug 应用层代码时, 发现一个宏 defined(__x86_64__)  对应x86_64 gcc 那么 arm -gcc 该使用什么宏表示呢?

: gcc -E -dM - </dev/null  > filegcc  

可以看到 gcc 中defined x86_64宏 

所以要想知道arm-gcc里面使用那个宏表示arm64

可以执行:arm-linux-gcc   -E -dM - </dev/null > arm-gcc-file

http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!! 但行好事 莫问前程 --身高体重180的胖子
原文地址:https://www.cnblogs.com/codestack/p/14465851.html