..bits & bytes teleported

Wednesday Jun 11, 2008

Sometime back, I had written an article titled- Introducing strace - a System call tracing and Signal reporting tool for system call tracing on Linux systems.

I had a brief look at it, but seems like 'truss' performs a similar thing (more? or less?) on Solaris systems. Here's a quick look:

Consider the simple C code snippet below:

  

int main() { printf("hello world"); return 0; }

After you have the object code, execute the binary (here 'a.out') using

$ truss a.out

You should see a output similar to this:

  
  
  

execve("a.out", 0xFFBFEA6C, 0xFFBFEA74)  argc = 1 resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 getcwd("/home/as227057/dev-tools/mysql-install/libexec", 1017) = 0 resolvepath("/home/as227057/dev-tools/mysql-install/libexec/a.out", "/home/as227057/dev-tools/mysql-install/libexec/a.out", 1023) = 52 stat("/home/as227057/dev-tools/mysql-install/libexec/a.out", 0xFFBFE848) = 0 open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT stat("/usr/sfw/lib/libc.so.1", 0xFFBFE300)      Err#2 ENOENT stat("/lib/libc.so.1", 0xFFBFE300)              = 0 resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 open("/lib/libc.so.1", O_RDONLY)                = 3 mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF3A0000 mmap(0x00010000, 1015808, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF280000 mmap(0xFF280000, 905589, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF280000 mmap(0xFF36E000, 32401, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 909312) = 0xFF36E000 mmap(0xFF376000, 6368, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF376000 munmap(0xFF35E000, 65536)                       = 0 memcntl(0xFF280000, 144068, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3)                                        = 0 mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF390000 munmap(0xFF3A0000, 32768)                       = 0 getcontext(0xFFBFE538) getrlimit(RLIMIT_STACK, 0xFFBFE518)             = 0 getpid()                                        = 5251 [5249] setustack(0xFF392A88) ioctl(1, TCGETA, 0xFFBFDB9C)                    = 0 fstat64(1, 0xFFBFDAB8)                          = 0 stat("/platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1", 0xFFBFD660) = 0 resolvepath("/platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1", "/platform/sun4v/lib/libc_psr.so.1", 1023) = 33 open("/platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1", O_RDONLY) = 3 mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF270000 munmap(0xFF272000, 24576)                       = 0 mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF3A0000 close(3)                                        = 0 hello worldwrite(1, " h e l l o   w o r l d", 11)               = 11 _exit(0)

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed