日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

跟蹤 UNIX 應(yīng)用程序的解決方案( 四 )


ERROR: Application failed to initialize
錯誤消息并沒有提供關(guān)于應(yīng)用程序為什么會啟動失敗的具體信息 。在這里,問題是故意引入的,但是您使用的任何命令或應(yīng)用程序都可能出現(xiàn)相同的問題,而錯誤消息沒什么幫助,有時候甚至沒有錯誤消息 。
對應(yīng)用程序運行跟蹤可能會提供一些線索(見清單 6) 。
清單 6. 運行跟蹤
$ truss ./errnoacc 
execve("errnoacc", 0x08047B20, 0x08047B28) argc = 1 
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) 
= 0xFEFB0000 
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 
getcwd("/export/home/mc", 1014) = 0 
resolvepath("/export/home/mc/errnoacc", "/export/home/mc/errnoacc", 1023) = 24 
xstat(2, "/export/home/mc/errnoacc", 0x080477E4) = 0 
open("/var/ld/ld.config", O_RDONLY) = 3 
fxstat(2, 3, 0x080476C4)= 0 
mmap(0x00000000, 144, PROT_READ, MAP_SHARED, 3, 0) = 0xFEFA0000 
close(3)= 0 
sysconfig(_CONFIG_PAGESIZE) = 4096 
xstat(2, "/usr/lib/libc.so.1", 0x08046F04) = 0 
resolvepath("/usr/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 
open("/usr/lib/libc.so.1", O_RDONLY)= 3 
mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEF90000 
mmap(0x00010000, 1413120, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, 
-1, 0) = 0xFEE30000 
mmap(0xFEE30000, 1302809, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) 
= 0xFEE30000 
mmap(0xFEF7F000, 30862, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED| 
MAP_INITDATA, 3, 1306624) = 0xFEF7F000 
mmap(0xFEF87000, 4776, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, 
-1, 0) = 0xFEF87000 
munmap(0xFEF6F000, 65536)= 0 
memcntl(0xFEE30000, 187632, 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) = 0xFEE20000 
munmap(0xFEF90000, 32768)= 0 
getcontext(0x08047534) 
getrlimit(RLIMIT_STACK, 0x0804752C) = 0 
getpid()= 15727 [15726] 
lwp_private(0, 1, 0xFEE22A00)= 0x000001C3 
setustack(0xFEE22A60) 
sysi86(SI86FPSTART, 0xFEF879BC, 0x0000133F, 0x00001F80) = 0x00000001 
open("/etc/shadow", O_RDONLY)Err#13 EACCES [file_dac_read] 
ioctl(1, TCGETA, 0x08046BB0)= 0 
fstat64(1, 0x08046B10) = 0 
ERROR: Application failed to initialize 
write(1, " E R R O R :A p p l i".., 40) = 40 
_exit(0)
問題出現(xiàn)在這一行上:open("/etc/shadow", O_RDONLY) Err#13 EACCES [file_dac_read] 。
在這里,應(yīng)用程序試圖打開一個文件,但是因為有文件權(quán)限保護這個文件,運行應(yīng)用程序的用戶沒有訪問權(quán) 。因為無法打開這個文件,應(yīng)用程序終止并在進程中寫錯誤消息 。
跟蹤正在運行的應(yīng)用程序
希望跟蹤應(yīng)用程序常常是因為應(yīng)用程序已經(jīng)啟動,而您希望查明應(yīng)用程序為什么不工作了 。與初始化示例一樣,應(yīng)用程序提供的錯誤消息或其他信息常常沒有準確地指出問題 。
試圖鎖定或訪問另一個進程正在使用的資源會使應(yīng)用程序看起來凍結(jié)了,沒有響應(yīng) 。
strace 和 truss 都能夠 “連接 到正在運行的進程 。連接到進程的跟蹤與從命令行運行進程的跟蹤相似,也產(chǎn)生程序正在執(zhí)行的系統(tǒng)函數(shù)的列表 。實際的跟蹤從跟蹤啟動時執(zhí)行的函數(shù)開始;對于在執(zhí)行期間 “掛起 的程序,跟蹤應(yīng)該會顯示程序正在等待的函數(shù) 。

推薦閱讀