Hệ thống (tạm dừng trực tiếp) trong Unix?


7

Tôi thường sử dụng một trình gỡ lỗi như cgdbvậy, rất may là tôi không cần phải dùng đến systemcác cuộc gọi để gỡ lỗi cho đến bây giờ.

Tôi có một tệp nhị phân mất khoảng 30 phút để tải vào gdbvà thường xuyên gặp sự cố với trình gỡ lỗi sau đó, có thể là do số lượng biểu tượng rất lớn. Điều này làm cho quy trình làm việc bình thường của tôi (tải gdb, thêm điểm dừng, xác định các biến vấn đề, v.v.) không thể thực hiện được.

Trong các cửa sổ, tại thời điểm này tôi sẽ bắt đầu thêm rất nhiều câu lệnh coutsystem("pause")(điểm dừng của người nghèo) trong toàn bộ mã của tôi; nhưng làm thế nào để tôi làm điều này trong một môi trường giống như unix?

Câu trả lời:


13

Bạn có thể muốn đọc từ cinđể có được một người đàn ông nghèo pause - nó sẽ đợi bạn gõ Enter, thay vì tiếp tục trong khi bạn đang uống cà phê (như sleep()ý muốn).


6

Tôi đôi khi dùng đến điều này

#define BRK()  do { printf("%s %d\n", __FILE__, __LINE__); getchar(); } while (0)
...
BRK();  // Stop and wait for enter

Ngoài ra, thiết bị chức năng có thể giúp: GCC cho phép nối vào mọi chức năng nhập / thoát, xem /programming/2281739/automatically-adding-enter-exit-feft-logs-to-a-project


Có thể C của bạn khác với tôi, nhưng tôi hoặc phải đặt parens vào định nghĩa hoặc xóa chúng trong lệnh gọi để làm việc này. Nếu không, đó là một mẹo hữu ích!
mê cung

Vâng, cảm ơn vì đã sửa chữa, thêm parens
valenok

5

Điều tương tự cho cout/ cerr, và bạn chỉ có thể sử dụng sleep()- xem man 3 sleephoặc man 3 usleepđể biết thêm thông tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.