אנגליתצרפתיתספרדי

סמל OnWorks

abicheck - מקוון בענן

הפעל את abicheck בספק אירוח בחינם של OnWorks על אובונטו מקוון, פדורה מקוון, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

זוהי הפקודה abicheck שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


abicheck - בדוק את הקבצים הבינאריים של האפליקציה עבור קריאות לסמלים פרטיים או מתפתחים ב
ספריות ולקישור סטטי של מספר ספריות מערכת.

תַקצִיר


אביצ'ק [-h] [-k] [-a] [-I] [-v] [-f listfile] [-אוֹ outfil] [-עמ' תבנית] [-ה תבנית] [-י
njobs] [-ל סִפְרִיָה] [-ל ldpath] [(-s|-S) dbfile] [(-ד|-D) dbfile] [-O dbfile] [-א
listfile] קבצים

תיאור


אביצ'ק מופעל על קבצים בינאריים של יישומים ומוציא אזהרות בכל פעם אחת מהפעולות הבאות
מתגלים שלושה מצבים:

· פְּרָטִי סמל שימוש. סמלים פרטיים הם פונקציות או משתני נתונים בספרייה
חבילה פנימית לאותה חבילה. הם משמשים את הספריות בחבילה
לתקשורת פנימית ואינם חלק מ-API/ABI שמפתחי יישומים
צריך להשתמש.

· מתפתח סמל שימוש. סמלים מתפתחים הם פונקציות או משתני נתונים בספרייה
חבילה המיועדת לצריכה של מפתחים, אך סומנו כ"מתפתחת" או
"לא יציבים" במובן שהם עלולים להפוך לבלתי תואמים או להיעלם בשחרור מאוחר יותר
של חבילת הספרייה.

· סטטי מְקַשֵׁר. קישור סטטי של ספריות מערכת (לדוגמה, libc.a) לתוך an
יישום הוא בדרך כלל לא רעיון טוב מכיוון שקוד ספריית המערכת שהוא "ננעל" עליו
היישום הבינארי עלול להפוך לבלתי תואם עם מהדורות מאוחרות יותר של המערכת. אביצ'ק
מנסה לזהות קישור סטטי של מספר ספריות מערכת.

התנהגות ברירת המחדל היא, עבור כל אובייקט בינארי מסומן, לבחון קריאות ישירות ממנו
אובייקט בינארי בלבד. ה -l אפשרות מאפשרת לספריות שהאובייקט הבינארי מביא לקבל
השיחות שלהם נבדקו גם כן.

אפשרויות


האפשרויות הבאות נתמכות:

-k המשך לבדוק קבצים בינאריים גם אם יש שגיאות חמורות (דוחות קישור דינמיים
סמלים לא פתורים, Ldd(1) כשלים, לא זוהו סמלים).

-h הדפס צורה ארוכה של עזרה.

-v מִלוּלִי. הדפס מידע נוסף.

-f קובץ רשימה
השמיים קובץ רשימה הוא קובץ המכיל רשימה של אובייקטים בינאריים לבדיקה, אחד בכל שורה.
רשימה זו מצורפת לכל הקבצים המסופקים כארגומנטים בשורת הפקודה. אם
קובץ רשימה הוא "-", אז נעשה שימוש ב-stdin.

-o אוסף
כתוב פלט ל אוסף במקום stdout.

-p דפוס
שנה את דפוס שם הגרסה תואם לקבוצות גרסאות פרטיות. ברירת המחדל היא
/פְּרָטִי/ באמצעות התאמה חסרת רגישות לאותיות גדולות.

אם רכיב של הביטוי הרגולרי דפוס מכיל שני נקודתיים ברצף: patt1::patt2,
אז תופעל התאמת רמת הסמל על ידי בדיקת האם גרסה::סמל or
ספרייה::סמל גפרורים דפוס (כאשר שם הסמל, גרסה (אם יש), וכן
שם הבסיס של הספרייה מוחלפים סמל, גרסה, ו ספריה). לדוגמה,

-p 'FOO_VERS.*::_foopriv'
or
-p 'libfoo.so.*::_foopriv'

-e דפוס
כמו -p אלא לממשקים "מתפתחים".

-L ldpath
הגדר את LD_LIBRARY_PATH משתנה הסביבה ל- ldpath לפני הפעלת דינמיקה
מקשר. להשתמש -L "" כדי לבטל את ההגדרה LD_LIBRARY_PATH.

אם אחד המרכיבים של ldpath היא המחרוזת "מצא", ואז כל הספריות המשותפות
in קבצים נמצאות והנתיבים שלהם מוכנסים למיקום "מצא". ציין זאת
הסדר יהיה אקראי.

-l ספריה
הוסף את שם הבסיס או הנתיב המלא של הספרייה המשותפת ספריה לרשימת
אובייקטים שיש לבדוק לביצוע שיחות פרטיות. אפשרות זו עשויה להופיע יותר מ
פעם אחת בשורת הפקודה והוא תוסף. כברירת מחדל, רק שיחות ישירות מא
בינארי לספריות המערכת נבדקות. ה -l מתג מאפשר בדיקה של
קריאות עקיפות למשל: app -> supportlib -> systemlib.

-a עברו בלולאה בכל הקבצים הבינאריים לפני הבדיקה ואספו את רשימת כל הקבצים המשותפים
חפצים. קח את שם הבסיס של כל אובייקט משותף שנמצא והתנהג כאילו היה
שצוין עם ה -l אפשרות אפשרות ולאחר מכן הפעל את בדיקות abicheck. בדרך זו,
קריאות מכל האובייקטים ה"פנימיים של היישום" נבדקות ולא רק ה-
שיחות ישירות. (שימושי כאשר לאובייקטים משותפים אין תלות שלהם
מוּקלָט.)

-I התעלם מספריות משותפות בבדיקה, בדוק רק קובצי הפעלה. מותאם ל -א,
תחילה יחפשו ספריות אך לא ייבדקו.

-d dbfile, -D dbfile
ציין מסד נתונים של סמלים של קובץ שטוח עבור הדינמיקה (ציבורי לעומת פרטי)
מִבְחָן. סיווגים אלה ישמשו אם הספרייה אינה מנוסחת (כלומר
הסיווג אינו קיים בספרייה עצמה). להשתמש -D לציין זאת בלבד
מידע מ dbfile צריך לשמש. קווים פנימה dbfile יכול להיות אחד מאלה
צורות:

ספריה|סמל
ספרייה|כיתה|סמל
library|FILE=נתיב

ספריה חייב להיות הנתיב המלא לספרייה שיש לציין (זה לא יכול להיות א
שם הבסיס).

הטופס הראשון מסמן סמל כפרטי.

הטופס השני מסמן סמל עם בכיתה איפה בכיתה יכול להיות ציבורי, פרטי או
מתפתח.

הטופס השלישי מציין את הקובץ נתיב יש לפתוח לפי דרישה מתי ספריה is
נתקל לראשונה. קוֹבֶץ נתיב מכיל שורות של שתי הצורות הראשונות פרט ל-
ספריה שדה. הצורה השלישית היא האצה כדי להימנע מעיבוד סיווגים רבים
שורות לספריות שמעולם לא נתקלו בהן בריצה.

-O dbfile
ציין קובץ עקיפה כדי לשנות את סיווג הסמלים עבור הדינמיקה
מבחן (ציבורי מול פרטי). הפורמט של קובץ העקיפה הוא כמו:

ספרייה|סמל|כיתה

הספרייה יכולה להיות הנתיב המלא או שם הבסיס. אם הספרייה היא "__SKIP__" הסמל
תתעלם מכל ספרייה שהיא נמצאת בה. הכיתה יכולה להיות "ציבורי",
"פרטי", "מתפתח" או "נמחק". המחלקה "נמחקה" היא בעלת מקרה מיוחד, כלומר
הסמל נמחק מהספרייה בגרסה כלשהי. הסמל "__ALL__" עבור
המחלקה "נמחקה" פירושה שכל הספרייה נמחקה או שאינה יציבה אחרת
להשתמש.

דוגמאות:

libfoo.so.1|__bar|פרטי
/lib/libxyz.so.1|baz|public
__SKIP__|__fputwc_xpg5

הגדרות אלה עוקפות כל סיווג בתוך הספרייה (מהספרייה
גרסאות, להשיג מ pvs(1) וכו').

-A קובץ רשימה
הגדר את ספריות ה-ABI המעניינות לספריות הרשומות ב קובץ רשימה (מלא
שמות נתיבים, אחד בכל שורה). רק שיחות לספריות אלה ייבדקו; את כל
שיחות ספרייה אחרות יתעלמו.

-s dbfile, -S dbfile
ציין מסדי נתונים נרחבים יותר של סמלים עבור מבחן הקישור הסטטי. dbfile יכול להיות
רשימה מופרדת בפסיקים של קבצים. אם קובץ הוא ארכיון סטטי (lib*.a) הוא כן
מעובד כדי לחלץ את הסמלים. אחרת זה קובץ מסד נתונים המורכב מ
שורות של הטופס symbol|library:module למשל:

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
...

כאשר כל הסמלים ב-modul.o מוגדרים באפליקציה, קישור סטטי של
מודול זה (וארכיון הספרייה המקביל) הוא ההנחה. להשתמש -S כדי לציין
שיש לבצע רק את בדיקת הקישור הסטטי.

השתמש -S int לעשות רק את בדיקת הקישור הסטטי ושימוש במסד הנתונים הפנימי.

השתמש -s אף לא אחד or -S אף לא אחד כדי לדלג לחלוטין על בדיקת הקישור הסטטי.

-j njobs
הפעלה njobs במקביל כתהליכים נפרדים. מרמז -k. מיועד בעיקר ל
מכונות מעבד מרובות איפה njobs צריך להיות קרוב למספר המעבדים.
הפלט נאסף בקבצי tmp ומודפס בבת אחת לקראת סוף הריצה as
כל עבודה מסתיימת.

If njobs הוא "-", "זהה" או "n", אז njobs יוגדר למספר בהתאם
מספר המעבדים במכונה הנוכחית (אם ניתן לקבוע זאת).

אופרנדים


האופרנדים הבאים נתמכים:

קבצים רשימה של אובייקטים בינאריים של יישומים לבדיקה.

תפוקה


יש שורה אחת לכל בעיה (ייתכן שיהיו מספר בעיות לכל מסומן בינארי) אשר
נראה כמו הבא:

אם לא נמצאו בעיות:
שם הקובץ: אוקיי

אם שימוש בסמל פרטי:
שם קובץ: פרטי (ספריה:גרסה פרטית) private_sym

אם השימוש בסמלים מתפתח:
שם הקובץ: מתפתח (ספריה:מתפתח_vers) מתפתח_סימ

אם קובץ מקושר סטטית בספריית ארכיון מערכת:
שם הקובץ: STATIC_LINK (ארכיון)

אם דילג על בדיקת הקובץ:
שם הקובץ: לדלג (טעם)

תחת שימוש במחלקה שנמחקה ב- -O לעקוף את אפשרות הקובץ, בעיות אלו עשויות להיות
מצאתי:

אם סמל נמחק מהספרייה במהדורה כלשהי:
שם הקובץ: DELETED_SYM: סמל/ספריה

(ספריה יהיה "לא כבול" אם הסמל לא היה קשור)

אם ספרייה שלמה נמחקה במהדורה כלשהי או שהיא לא יציבה בדרך אחרת
לְהִשְׁתַמֵשׁ:
שם הקובץ: UNSTABLE_LIB: ספרייה-soname = שביל ספריה

(שביל ספריה יכול להיות "הקובץ לא נמצא" אם הספרייה לא נמצאה)

הבעיות הבאות יגרמו לשגיאה קטלנית אלא אם כן -k נעשה שימוש באפשרות:

אם המקשר הדינמי לא יכול היה לפתור N סמלים מתי Ldd -r הופעל:
שם הקובץ: UNBOUND_SYMBOLS: N

אם המקשר הדינמי לא מצא קשרים דינמיים:
שם הקובץ: NO_BINDINGS

If Ldd -r עם LD_DEBUG=קבצים, כריכות נִכשָׁל:
שם הקובץ: LDD_ERROR

בשלושת המקרים האחרונים הללו פועלים Ldd -r על הקובץ הבינארי למידע נוסף על מה
השתבש (שים לב אביצ'ק פועל Ldd -r עם LD_DEBUG=קבצים, כריכות מַעֲרֶכֶת). על כמה
מערכות שהמקשר הדינמי לא יעבד איתן תוכניות SUID LD_DEBUG סט (זה בדרך כלל
תוצאות ב NO_BINDINGS ב אביצ'ק תְפוּקָה).

שים לב שאם אתה מפעיל את abicheck על ספרייה משותפת (לדוגמה, libfoo.so)
יש ל לֹא נבנה עם -l lib מסמנים כדי לתעד את התלות בספרייה שלו, ולאחר מכן את ה"לא קשור
סביר מאוד שהבעיה בסמלים" היא. אין הרבה מה לעשות מלבד לבנות מחדש את
ספרייה או בדיקת אפליקציה בינארית שמשתמשת בספרייה ושימוש ב- -l אופציה של
אביצ'ק.

יְצִיאָה סטָטוּס


ערכי היציאה הבאים מוחזרים:

0 לא נמצאו שגיאות ולא נמצאו בעיות.

1 אירעה שגיאה קטלנית.

2 לא אירעו שגיאות קטלניות, אך בחלק מהקבצים הבינאריים זוהו בעיות.

אורים


רק אובייקטי ELF מסומנים.

ב -s -S -d ו -O dbfiles התו '#' מתחיל שורת הערה בדרך הרגילה.

אלא אם כן משתמשים בהתאמות המותאמות אישית "::" שסופקו דרך ה -p or -e דגלים, אביצ'ק יכול
בדוק רק מול ספריות מערכת שהוחלו עליהן גירסאות סמלים (כלומר
המידע הפרטי ו/או המתפתח שנרשם עבור כל סמל בספרייה עצמה).
למידע נוסף על גירסאות סמלים, עיין ב"מדריך המקשר והספריות של סולאריס"
ספר תשובות בכתובת האתר http://docs.sun.com/ab2/coll.45.13 והפקודות/גרסה-סקריפט
קטע של דף המידע "ld" מקשר של GNU.

דפוסי התאמת שם גרסת הסמלים המוגדרים כברירת מחדל הם התאמות חסרות רגישות לאותיות גדולות ל-
מחרוזות "פרטי" ו"מתפתח" עבור המקרים הפרטיים והמתפתחים, בהתאמה.

שמות קבצים מוזרים המכילים את תו המרכאה בודדת או שורה חדשה ידלגו; כגון
תווים מפריעים לפקודות קריאה דרך המעטפת.

כדי להשתמש בספריות חוזרות למצוא(1) או לאסוף את הפלט לקובץ לשימוש עם
מה היא -f אפשרות, או בצינור דרך:

למצוא ... | abicheck -f - ...

השתמש ב-abicheck באינטרנט באמצעות שירותי onworks.net


שרתים ותחנות עבודה בחינם

הורד אפליקציות Windows & Linux

פקודות לינוקס

Ad