[英]Debugging Linux process hangs, which code is it running?
我有一個在非常弱的 Linux 嵌入式設備上運行的進程,它無法在自身上運行 gdb / gdb 服務器。 我讓它反復從共享庫中引發 function X (還有其他一些進程同時調用它的頻率要低得多),它通常在 1 天或半天后掛在共享庫中的某個地方。 我該如何調試:
我嘗試了什么:
gdb 帶有一個名為gcore
的程序,它將從正在運行的進程中生成一個核心文件。
現在許多系統默認禁用核心文件(shell 中的ulimit -c
將顯示 0)。 使用ULIMIT ulimit -c unlimited
UNLIMITE shell命令,然后在同一Z2591C98B70119FE624898B1EE424B5E91Z(這些限制中的其他限制)(如果您從其他過程中)進行Z2591C98B70119FE624B1E 6.1198B11198B1ENES ONTH INDY LIMITS INDY LONS 18 YESENS MENT 8您的過程。它們在那里。例如, LimitCORE=
在 systemd 單元文件中)。
一旦您的進程進入錯誤的 state,請在其進程 ID 上運行gcore
。 然后,您可以將其復制到您的工作站並將其加載到 gdb ( gdb <executable> <core-file>
)。 然后,您可以在獲取核心轉儲時查看堆棧跟蹤和其他 state。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.