ptrace 在 linux 和 freebsd 下的若干区别 | Several differences of ptrace between Linux and 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 want to read or write.

The last and the most annoying one I've met, is the parameter `addr' for the CONTINUE operations. Under linux this parameter is ignored, and the child process will continue at where it had been interrupted; but under freebsd, we can specify this location by setting this parameter, and we can also let it continue at where it had been interrupted but setting the value to 1.

Now that's all for my program, and it seems that the interface under freebsd is better than that under linux.