Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

abicheck - Trực tuyến trên đám mây

Chạy abicheck trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh kiểm tra có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi, chẳng hạn như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


abicheck - kiểm tra mã nhị phân của ứng dụng để biết các cuộc gọi đến các ký hiệu riêng tư hoặc phát triển trong
thư viện và liên kết tĩnh của một số thư viện hệ thống.

SYNOPSIS


abicheck [-h] [-k] [-a] [-I] [-v] [-f tệp danh sách] [-hoặc là tập tin bên ngoài] [-P mẫu] [-e mẫu] [-NS
việc làm] [-l thư viện] [-L ldpath] [(-s | -S) tệp db] [(-d | -D) tệp db] [-O tệp db] [-MỘT
tệp danh sách] các tập tin

MÔ TẢ


abicheck được chạy trên tệp nhị phân ứng dụng và đưa ra cảnh báo bất cứ khi nào sau đây
ba điều kiện được phát hiện:

· Riêng biểu tượng sử dụng. Ký hiệu riêng là các hàm hoặc biến dữ liệu trong thư viện
gói bên trong gói đó. Chúng được sử dụng bởi các thư viện trong gói
để liên lạc nội bộ và không phải là một phần của API / ABI mà các nhà phát triển ứng dụng
nên sử dụng.

· Tiến hóa biểu tượng sử dụng. Các ký hiệu đang phát triển là các hàm hoặc biến dữ liệu trong thư viện
gói dành cho nhà phát triển, nhưng đã được đánh dấu là "đang phát triển" hoặc
"không ổn định" theo nghĩa là chúng có thể trở nên không tương thích hoặc biến mất trong bản phát hành sau
của gói thư viện.

· tĩnh liên kết. Liên kết tĩnh các thư viện hệ thống (ví dụ: libc.a) thành một
ứng dụng nói chung không phải là một ý tưởng hay vì mã thư viện hệ thống mà nó "khóa" vào
tệp nhị phân của ứng dụng có thể trở nên không tương thích với các bản phát hành sau này của hệ thống. abicheck
cố gắng phát hiện liên kết tĩnh của một vài thư viện hệ thống.

Hành vi mặc định là, đối với mỗi đối tượng nhị phân được kiểm tra, kiểm tra các lệnh gọi trực tiếp từ đó
chỉ đối tượng nhị phân. Các -l tùy chọn cho phép các thư viện mà đối tượng nhị phân đưa vào có
cuộc gọi của họ cũng được kiểm tra.

LỰA CHỌN


Các tùy chọn sau được hỗ trợ:

-k Tiếp tục kiểm tra mã nhị phân ngay cả khi có lỗi nghiêm trọng (báo cáo trình liên kết động
các ký hiệu chưa được giải đáp, ldd(1) hỏng hóc, không phát hiện ký hiệu).

-h In ra mẫu dài của sự trợ giúp.

-v Dài dòng. In ra thông tin bổ sung.

-f danh sách
Sản phẩm danh sách là một tệp chứa danh sách các đối tượng nhị phân cần kiểm tra, một đối tượng trên mỗi dòng.
Danh sách này được nối vào bất kỳ tệp nào được cung cấp dưới dạng đối số trên dòng lệnh. Nếu như
danh sách là "-", thì stdin được sử dụng.

-o ô uế
Ghi đầu ra vào ô uế thay vì stdout.

-p Belt Hold
Sửa đổi bộ phiên bản riêng tư gắn nhãn mẫu đối sánh tên phiên bản. Mặc định là
/riêng/ sử dụng đối sánh không phân biệt chữ hoa chữ thường.

Nếu một thành phần của regex Belt Hold chứa hai dấu hai chấm liên tiếp: patt1 :: patt2,
sau đó đối sánh cấp biểu tượng sẽ được kích hoạt bằng cách kiểm tra xem phiên bản :: biểu tượng or
thư viện :: biểu tượng diêm Belt Hold (trong đó tên ký hiệu, phiên bản (nếu có) và
tên cơ sở thư viện được thay thế cho biểu tượng, phiên bảnthư viện). Ví dụ,

-p 'FOO_VERS. * :: _ foopriv'
or
-p 'libfoo.so. * :: _ foopriv'

-e Belt Hold
Giống như -p nhưng đối với các giao diện "đang phát triển".

-L ldpath
Đặt LD_LIBRARY_PATH môi trường biến thành ldpath trước khi gọi động
trình liên kết. Sử dụng -L "" để bỏ đặt LD_LIBRARY_PATH.

Nếu một trong các thành phần của ldpath là chuỗi "find", sau đó là tất cả các thư viện được chia sẻ
in các tập tin được tìm thấy và đường dẫn của chúng được chèn vào vị trí "tìm thấy". Lưu ý rằng
thứ tự sẽ ngẫu nhiên.

-l thư viện
Thêm tên cơ sở hoặc tên đường dẫn đầy đủ của thư viện được chia sẻ thư viện vào danh sách
đối tượng được kiểm tra để thực hiện cuộc gọi riêng tư. Tùy chọn này có thể xảy ra nhiều hơn
một lần trên dòng lệnh và là phụ gia. Theo mặc định, chỉ các cuộc gọi trực tiếp từ một
nhị phân đến các thư viện hệ thống được kiểm tra. Các -l công tắc cho phép kiểm tra
cuộc gọi gián tiếp, ví dụ: app -> supportlib -> systemlib.

-a Lặp qua tất cả các tệp nhị phân trước khi kiểm tra và thu thập danh sách tất cả các tệp được chia sẻ
các đối tượng. Lấy tên cơ sở của mỗi đối tượng được chia sẻ được tìm thấy và hoạt động như thể nó là
được chỉ định với -l tùy chọn tùy chọn và sau đó chạy kiểm tra abicheck. Cách này,
các cuộc gọi từ tất cả các đối tượng "nội bộ ứng dụng" được kiểm tra thay vì chỉ
các cuộc gọi trực tiếp. (Hữu ích khi các đối tượng được chia sẻ không có phụ thuộc của chúng
được ghi lại.)

-I Bỏ qua các thư viện được chia sẻ trong việc kiểm tra, chỉ kiểm tra các tệp thực thi. Tương thích với -một,
thư viện sẽ được tìm kiếm đầu tiên nhưng sau đó không được kiểm tra.

-d tệp db, -D tập tin db
Chỉ định cơ sở dữ liệu ký hiệu tệp phẳng dự phòng cho động (công khai so với riêng tư)
kiểm tra. Các phân loại này sẽ được sử dụng nếu thư viện không được phiên bản (tức là
phân loại không tồn tại trong chính thư viện). Sử dụng -D chỉ để chỉ ra rằng
thông tin từ tập tin db nên được sử dụng. Các dòng trong tập tin db có thể là một trong những
các hình thức:

thư viện | biểu tượng
thư viện | lớp | biểu tượng
thư viện | FILE = đường dẫn

thư viện phải là đường dẫn đầy đủ đến thư viện được chỉ định (nó không thể là
tên cơ sở).

Biểu mẫu đầu tiên đánh dấu biểu tượng như là riêng tư.

Dạng thứ hai đánh dấu biểu tượng với tốt nghiệp lớp XNUMX Ở đâu tốt nghiệp lớp XNUMX có thể là công khai, riêng tư, hoặc
đang phát triển.

Biểu mẫu thứ ba cho biết tệp con đường nên được mở theo yêu cầu khi thư viện is
lần đầu tiên gặp phải. Tập tin con đường chứa các dòng của hai dạng đầu tiên ngoại trừ
thư viện đồng ruộng. Hình thức thứ ba là tăng tốc để tránh xử lý nhiều phân loại
dòng cho các thư viện không bao giờ gặp phải trong quá trình chạy.

-O tập tin db
Chỉ định một tệp ghi đè để sửa đổi phân loại ký hiệu cho động
(công khai và riêng tư). Định dạng cho tệp ghi đè giống như:

thư viện | biểu tượng | lớp

Thư viện có thể là đường dẫn đầy đủ hoặc tên cơ sở. Nếu thư viện là "__SKIP__" thì ký hiệu
sẽ bị bỏ qua đối với bất kỳ thư viện nào mà nó được tìm thấy. Lớp có thể là "công khai",
"riêng tư", "đang phát triển" hoặc "đã xóa". Lớp "đã xóa" được viết chữ đặc biệt, có nghĩa là
biểu tượng đã bị xóa khỏi thư viện trên một số bản phát hành. Ký hiệu "__ALL__" cho
lớp "đã xóa" có nghĩa là toàn bộ thư viện đã bị xóa hoặc không ổn định
để sử dụng.

Ví dụ:

libfoo.so.1 | __bar | private
/lib/libxyz.so.1|baz|công khai
__SKIP__ | __fputwc_xpg5

Các cài đặt này ghi đè bất kỳ phân loại nào bên trong thư viện (từ thư viện
lập phiên bản, có thể lấy được từ pv(1), v.v.).

-A danh sách
Đặt các thư viện ABI quan tâm đến các thư viện được liệt kê trong danh sách (đầy
tên đường dẫn, một tên trên mỗi dòng). Chỉ các cuộc gọi vào các thư viện này sẽ được kiểm tra; tất cả các
các lệnh gọi thư viện khác sẽ bị bỏ qua.

-s tệp db, -S tập tin db
Chỉ định cơ sở dữ liệu ký hiệu mở rộng hơn cho thử nghiệm liên kết tĩnh. tập tin db có lẽ
danh sách tệp được phân tách bằng dấu phẩy. Nếu một tệp là một kho lưu trữ tĩnh (lib * .a) thì nó là
được xử lý để trích xuất các ký hiệu. Nếu không, nó là một tệp cơ sở dữ liệu bao gồm
các dòng của biểu tượng biểu mẫu | thư viện: mô-đun, ví dụ:

shmat | /usr/lib/libc.a: shmsys.o
shmctl | /usr/lib/libc.a: shmsys.o
shmdt | /usr/lib/libc.a: shmsys.o
shmget | /usr/lib/libc.a: shmsys.o
hữu ích. Cảm ơn !

Khi tất cả các ký hiệu trong một module.o được xác định trong ứng dụng, liên kết tĩnh của
mô-đun đó (và kho lưu trữ thư viện tương ứng) được giả định. Sử dụng -S để chỉ
rằng chỉ kiểm tra liên kết tĩnh nên được thực hiện.

Sử dụng -S int để chỉ kiểm tra liên kết tĩnh và sử dụng cơ sở dữ liệu nội bộ.

Sử dụng -s không ai or -S không ai để bỏ qua hoàn toàn kiểm tra liên kết tĩnh.

-j việc làm
chạy việc làm song song với tư cách là các quá trình riêng biệt. Ngụ ý -k. Chủ yếu dành cho
nhiều máy CPU nơi việc làm nên gần với số lượng bộ xử lý.
Đầu ra được thu thập trong các tệp tmp và in tất cả cùng một lúc gần cuối quá trình chạy dưới dạng
mỗi công việc kết thúc.

If việc làm là "-", "phát hiện" hoặc "n", sau đó việc làm sẽ được đặt thành một số tùy thuộc vào
số lượng bộ vi xử lý trên máy hiện tại (nếu có thể xác định được).

TOÁN HẠNG


Các toán hạng sau được hỗ trợ:

các tập tin Danh sách các đối tượng nhị phân ứng dụng cần kiểm tra.

OUTPUT


Có một dòng cho mỗi vấn đề (có thể có nhiều vấn đề trên mỗi lần kiểm tra nhị phân)
trông giống như sau:

Nếu không có vấn đề nào được tìm thấy:
tên tập tin: ĐỒNG Ý

Nếu sử dụng ký hiệu riêng:
tên tệp: RIÊNG (thư viện:phiên bản riêng tư) riêng_sym

Nếu đang phát triển việc sử dụng biểu tượng:
tên tập tin: ĐÁNH GIÁ (thư viện:Evolution_vers) Evolution_sym

Nếu tệp được liên kết tĩnh trong thư viện lưu trữ hệ thống:
tên tập tin: STATIC_LINK (lưu trữ)

Nếu việc kiểm tra tệp đã bị bỏ qua:
tên tập tin: NHẢY (lý do)

Đang sử dụng lớp đã xóa trong -O ghi đè tùy chọn tệp, những vấn đề này có thể
tìm:

Nếu một biểu tượng đã bị xóa khỏi thư viện trên một số bản phát hành:
tên tập tin: DELETED_SYM: biểu tượng/thư viện

(thư viện sẽ là "không bị ràng buộc" nếu ký hiệu không bị ràng buộc)

Nếu toàn bộ thư viện đã bị xóa trên một số bản phát hành hoặc không ổn định đối với
sử dụng:
tên tập tin: UNSTABLE_LIB: thư viện-soname = đường dẫn thư viện

(đường dẫn thư viện có thể là "không tìm thấy tệp" nếu không tìm thấy thư viện)

Các sự cố sau sẽ gây ra lỗi nghiêm trọng trừ khi -k tùy chọn được sử dụng:

Nếu trình liên kết động không thể giải quyết N ký hiệu khi ldd -r đã chạy:
tên tập tin: UNBOUND_SYMBOLS: N

Nếu trình liên kết động không tìm thấy liên kết động:
tên tập tin: KHÔNG_BIÊN BẢN

If ldd -r với LD_DEBUG = tệp, liên kết thất bại:
tên tập tin: LDD_ERROR

Trong ba trường hợp sau, chạy ldd -r trên tệp nhị phân để biết thêm thông tin về những gì
đã sai (lưu ý rằng abicheck chạy ldd -r với LD_DEBUG = tệp, liên kết bộ). Một chút
hệ thống trình liên kết động sẽ không xử lý các chương trình SUID với LD_DEBUG thiết lập (cái này thường là
kết quả trong KHÔNG_RÀNG BUỘC trong abicheck đầu ra).

Lưu ý rằng nếu bạn đang chạy abicheck trên một thư viện được chia sẻ (ví dụ: libfoo.so) thì
không được xây dựng với -l lib cờ để ghi lại các phụ thuộc thư viện của nó, sau đó là "unbound
Các biểu tượng "rất có thể xảy ra vấn đề. Không có gì có thể làm được ngoài việc xây dựng lại
thư viện hoặc kiểm tra một tệp nhị phân ứng dụng sử dụng thư viện và sử dụng -l tùy chọn
abicheck.

EXIT TÌNH TRẠNG


Các giá trị thoát sau được trả về:

0 Không có lỗi và không có vấn đề được tìm thấy.

1 Đã xảy ra lỗi nghiêm trọng.

2 Không có lỗi nghiêm trọng nào xảy ra, nhưng một số mã nhị phân có vấn đề được phát hiện.

GHI CHÚ


Chỉ các đối tượng ELF được kiểm tra.

Trong tạp chí -s -S -d-O dbfiles ký tự '#' bắt đầu dòng nhận xét theo cách thông thường.

Trừ khi ai đó đang sử dụng các kết quả phù hợp tùy chỉnh "::" được cung cấp qua -p or -e cờ, abicheck có thể
chỉ kiểm tra các thư viện hệ thống đã áp dụng lập phiên bản ký hiệu cho chúng (tức là
thông tin cá nhân và / hoặc phát triển được ghi lại cho mỗi ký hiệu trong chính thư viện).
Để biết thêm thông tin về cách lập phiên bản biểu tượng, hãy xem "Hướng dẫn Thư viện và Trình liên kết Solaris"
sách giải đáp tại URL http://docs.sun.com/ab2/coll.45.13 và Lệnh / Phiên bản-Tập lệnh
của trang thông tin "ld" của trình liên kết GNU.

Các mẫu đối sánh tên phiên bản biểu tượng mặc định là các mẫu đối sánh không phân biệt chữ hoa chữ thường với
chuỗi "riêng tư" và "đang phát triển" cho các trường hợp riêng tư và đang phát triển, tương ứng.

Các tên tệp kỳ lạ có chứa ký tự trích dẫn đơn hoặc dòng mới sẽ bị bỏ qua; như là
các ký tự can thiệp vào việc gọi các lệnh thông qua shell.

Để đệ quy sử dụng thư mục tìm(1) và thu thập kết quả đầu ra vào một tệp để sử dụng với
các -f tùy chọn hoặc trong một đường ống dẫn qua:

tìm ... | abicheck -f - ...

Sử dụng abicheck trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad