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)


