2013-07-26 21 views
5

Vì vậy, tôi chạy tệp trong trình gỡ lỗi perl bằng cách sử dụng tệp perl -d.pl. Nhưng sau đó file.pl được cho là cũng có các đối số. Làm thế nào để cung cấp luận cứ cho file.pl Thêm một câu hỏi: file.pl có dòng này trong đó:Vượt qua đối số vào tệp perl trong trình gỡ rối và đặt điểm ngắt trong tệp được thực hiện bởi hệ thống

system("./file2.pl"); 

Có cách nào để thiết lập một breakpoint trong file2.pl nếu nó đang chạy như system? Tôi đã dành 7 ngày trên trình gỡ lỗi perl và tôi không thể đặt điểm ngắt tại tệp2.pl Vui lòng giúp

EDIT: Có phản hồi tuyệt vời từ DVK để thêm DB :: single = 1. Tôi đã thử nghiệm trên một số tệp và nó hoạt động. Nhưng tôi có nhiều hơn 100 tệp và nếu tôi làm điều này theo cách thủ công, nó sẽ đưa tôi rất nhiều thời gian. Tôi sử dụng .perldb và sử dụng afterinit để đánh máy tất cả các lệnh. Tôi đã đưa ra một thuật toán tìm số dòng của mỗi tập tin mà điểm ngắt cần phải đi. Tôi chỉ có thể không ngẫu nhiên (tự động sử dụng một tập tin thực thi) mở tất cả các tập tin và thêm DB :: duy nhất = 1 đến nơi tôi thích. Toàn bộ hệ thống có thể sụp đổ sau đó. Tôi muốn đặt breakpoint vì nó an toàn hơn

Trả lời

0

Bạn vượt qua chúng như bạn bình thường:

perl -d ./file2.pl arg1 arg2 arg3 ... 
+0

oh, tôi tiếp tục đặt vào đường dẫn tệp, cảm ơn ... bạn cũng có thể trả lời questin đầu tiên – ban

+0

vì vậy tôi làm điều gì đó như: perl -d/path/to/file arg1 arg2 ??? – ban

+0

không hoạt động vì tệp nằm trong một thư mục khác – ban

3

Vâng, bạn có thể.

Thêm đoạn mã sau vào dòng nơi bạn muốn phá vỡ trong file2.pl:

$DB::single = 1; 

Để kiểm soát gỡ lỗi tự động từ thời điểm đó, bạn cần phải thao tác @DB::typeahead mảng. Từ perldoc:

Bạn có thể thử nhập TTY vào trình gỡ lỗi bằng cách thêm các lệnh tùy ý vào @DB :: typeahead. Ví dụ, tập tin .perldb của bạn có thể chứa:

sub afterinit { push @DB::typeahead, "b 4", "b 6"; } 

Mã này có thể là trong một khối BEGIN {}, hoặc một .perldb tập tin cấu hình đặc biệt.

+0

tôi có 100 tệp được gọi là sử dụng hệ thống. Nếu tôi bắt đầu làm việc này, tôi sẽ mất nhiều thời gian hơn tôi tưởng tượng. Tôi có các tập tin trong các tập tin và tất cả chúng được gọi với hệ thống hoặc eval – ban

+0

Tôi không thể thao tác perl5db bằng cách nào đó ... bạn có biết? – ban

+0

@ban - vâng. Xem perldoc tôi liên kết - nó cho thấy làm thế nào. – DVK

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