2017-04-18 58 views
0

爲什麼gdb顯示程序在啓動過程中退出,因此之前要停在主函數的第一個斷點處?gdb在啓動過程中顯示「程序退出」

一些步驟:

$ gdb --cd $programhome -tui -tty $reservedtty --args myprogram 

b main 
r 

GDB顯示:

Starting program: myprogram 
During startup program exited with code 1. 

我已經嘗試過在exit()函數來打破,但沒有成功。

回答

0

有權限問題訪問次級終端口。

gdb正在啓動參數-tty它將輸入/輸出切換到另一個tty端口(在這種情況下,僞:pts)。

當兩個終端用不同的用戶打開時,即使在第一次登錄後用su命令更改用戶,第一個登錄的用戶需要在兩個ttys中相同。

1

爲什麼GDB退出之前在主函數

  1. GDB停在第一個斷點是退出。你的程序確實。
  2. 它在之前退出達到main

這種情況可能有幾個原因,如:

  1. 破壞了二進制 - 內核拒絕它在execve系統調用由於某種原因,程序的不是一個單一的指令,實際運行。
  2. 動態鏈接拒絕它(例如因爲一些所需的庫或符號缺失)
  3. 殼牌拒絕執行程序(壞~/.bashrc,壞$PATH等)。

您可以通過運行GDB(它運行?)外的程序,沒有~/.bashrc運行,使用(gdb) catch syscall exit_group(在Linux上)等縮小實際原因

+0

是的。它運行。對不起,關於「gdb退出」,什麼時候應該是「gdb顯示過早退出」。我會編輯它。 – Luciano

+0

你的答案向我展示了調查可能干擾程序加載/執行的外部因素的方法。我找到了 !這是tty權限。 TNX – Luciano

相關問題