最近要把一个程序移植到Debian-kfreebsd上,并不如想象中的顺利。 主要是ptrace在两个平台上不太一样。 首先是宏定义,linux底下都叫PTRACE_*,freebsd上都是PT_*。这个也许不算什么 然后是ptrace函数的参数,主要是value这个,linux下面是long很好用,但是freebsd下是int,这样64位的时候就有些问题。 但是freebsd的ptrace有个更好用的操作PT_IO,可以自定义读写长度,而linux底下没有,要自己搞。 最后一个,花了我很长时间才解决的,是CONTINUE这个操作,linux下面addr这个参数是被忽略的,直接从中断的地方继续;但是freebsd下面则可以利用这个参数指定从哪里继续,如果希望从中断的地方继续,则指定为1即可。 目前只遇到这些,从这些方面来看,还是freebsd的接口更好用一些。 Recently I've been porting a software from Linux to Debian-kfreebsd, but it's not as easy as I had expected. The problem is the interface of ptrace is not exactly the same between linux and kfreebsd. The first is the names of the macros, which are PTRACE_* under linux and PT_* under freebsd. Secondly the function `ptrace' is not the same, the parameter `value' is `long' under Linux, but `int' under freebsd, so it seems that there'll be a problem on 64 bit freebsd. However, there's another operation called PT_IO under freebsd, using which we can specify the number of bytes we ...
久病成医 | Prolonged Illness Makes the Patient a Good Doctor