2012-04-30 22 views
7

Tôi đang sử dụng gdb trên OSX, mà dường như có cả các gcore cũng không generate-core-file lệnh:lõi bán phá giá trong gdb trên OSX (không "gcore" hoặc "tạo-core-file")

$ gdb 
GNU gdb 6.3.50-20050815 (Apple version gdb-1705) (Fri Jul 1 10:50:06 UTC 2011) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "x86_64-apple-darwin". 
(gdb) gcore 
Undefined command: "gcore". Try "help". 
(gdb) generate-core-file 
Undefined command: "generate-core-file". Try "help". 
(gdb) 

Do điều này, làm thế nào tôi có thể đi về việc tạo ra một bãi chứa lõi, hoặc một cái gì đó xấp xỉ một, thông qua GDB?

(tôi nghi ngờ tôi có thể sử dụng dump memory, nhưng điều đó đòi hỏi phải có một dải địa chỉ, và tôi đang phải vật lộn để tìm ra đúng info gọi để có phạm vi bộ nhớ đúng ...)

Trả lời

8

Chạy lldb --attach-pid, sau đó sử dụng lệnh process save-core để lưu lõi. Lưu ý rằng quá trình này sẽ bị tạm dừng ngay từ khi bạn đính kèm, vì vậy hãy cẩn thận nếu đó là một quá trình quan trọng.

$ lldb --attach-pid <pid> 
(lldb) process attach --pid 76669 
Process 76669 stopped 
Executable module set to "/bin/bash". 
Architecture set to: x86_64h-apple-macosx. 
(lldb) process save-core "core" 
mach_header: 0xfeedfacf 0x01000007 0x00000008 0x00000004 0x00000030 0x00000e08 0x00000000 0x00000000 
... 
Saving data for segment at 0x7fd455200000 
... 
+0

Tôi có thể làm điều đó để có được kết xuất bộ nhớ của một quy trình không? Làm sao? Điều này không hoạt động. '-bash: lldb: lệnh không tìm thấy ' –

+0

@NicolasBarbulesco Thử' xcode-select --install' để cài đặt công cụ nhà phát triển – andrewdotn

+0

'-bash: xcode-select: không tìm thấy lệnh' –

Các vấn đề liên quan