2011-02-01 34 views

Trả lời

18

Sử dụng lệnh info source để nhận thông tin cho khung ngăn xếp hiện tại.

Dưới đây là một ví dụ về sản lượng của nó:

(gdb) info source 
Current source file is /build/gtk+2.0-LJ3oCC/gtk+2.0-2.24.30/modules/input/gtkimcontextxim.c 
Located in /home/sashoalm/Desktop/compile/gtk+2.0-2.24.30/modules/input/gtkimcontextxim.c 
Contains 1870 lines. 
Source language is c. 
Producer is GNU C11 5.3.1 20160225 -mtune=generic -march=i686 -g -g -O2 -O2 -fstack-protector-strong -fPIC -fstack-protector-strong. 
Compiled with DWARF 2 debugging format. 
Does not include preprocessor macro info.
+0

Lệnh này hiển thị thông tin về điểm ngắt * hiện tại * và đôi khi phải mất một thời gian dài để đạt điểm ngắt trên một hàm cụ thể. Trong trường hợp này có thể hữu ích khi bắt đầu nhảy đến hàm đó bằng 'jump '. – mMontu

1

Trong Python scripting

Để tìm hiểu Python scripting, hoặc nếu bạn muốn xem chỉ đường dẫn đầy đủ và không có gì khác:

class Curpath(gdb.Command): 
    """ 
Print absolute path of the current file. 
""" 
    def __init__(self): 
     super().__init__('curpath', gdb.COMMAND_FILES) 
    def invoke(self, argument, from_tty): 
     gdb.write(gdb.selected_frame().find_sal().symtab.fullname() + os.linesep) 
Curpath() 

Cách sử dụng:

curpath 
0

Câu trả lời hay từ Ciro Santill. Tuy nhiên, kịch bản lệnh cần một sửa đổi nhỏ để làm việc với gdb 8.0.1 của tôi.

Tôi cũng đã thay đổi nó để sao chép văn bản vào khay nhớ tạm để tôi có thể sử dụng nó ngay lập tức. Nó hoạt động độc đáo với plugin file_line.vim. Đây là một ví dụ về nội dung clipboard sản xuất bởi các kịch bản:

/home/ops1/projects/test01/main.cpp:5 

Kịch bản là dưới đây:

import pyperclip 

class Clippath (gdb.Command): 
    """print absolute path""" 
    def __init__(self): 
     super(Clippath, self).__init__("clippath", gdb.COMMAND_USER) 

    def invoke(self, arg, from_tty): 
     symtabline = gdb.selected_frame().find_sal() 
     pyperclip.copy(symtabline.symtab.fullname() + ":" + str(symtabline.line)) 

Clippath() 

Dưới đây là các bước để làm cho nó tất cả các công việc:

  1. Install pyperclip thư viện python sudo zypper trong python3-pyperclip
  2. Lưu tập lệnh ở trên vào tệp, giả sử file-path.py và sao chép tệp đó vào ~/.gdb
  3. Cập nhật ~/.gdbinit với việc thêm những dòng sau: nguồn ~/.gdb/file-path.py
  4. Bây giờ bạn có thể sao chép các đường dẫn và đường vào clipboard với clippath trong gdb

Và đọc thêm về API Python GDB - link

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