dbx를 사용하는 경우 – PC에서 커널을 디버그하려면 이 사용자 지정 가이드가 도움이 될 것입니다.
승인됨: Fortect
커널을 동적으로 복사한 회사가 링크된 경우 공통 커널이라이브러리, 동일한 수행 작업 환경에서 기본 파일을 디버그할 수 있도록 하는 것이 좋습니다.그것이 생성 된 곳. dbx 는 제한된 지원을 제공합니다”비준수” m filesag 디버깅의 예(가장 큰 파일의 경우다른 Solaris® 유형 또는 위치로 시스템 전체에 생성됩니다.운영 체제.
<시간>
dbx 는 당신이 이 자바 애플리케이션을 가리키고 있다는 것을 찾을 수 없습니다.원본 코드로 가능한 한 커널 파일에서.
<시간>
동일한 운영 환경에서 메인 파일 디버그
디버그 < 작업. /kbd> 명령을 사용하십시오. dbx 가 이미 실행 중인 경우:
프로그램 제목과 dbx 가 자주 메인 파일에서 프로그램 이름을 얻으려고 한다면 - 를 확실히 바꿀 수 있습니다. dbx 는 전체 경로를 사용할 수 없도록 지정된 경우 기본 exe를 찾지 못할 수 있습니다.기본 파일에서. dbx 가 실행 파일을 찾을 수 없는 경우,전체 경로 포함 - dbx 를 나타내야 하는 경우 바이너리커널 파일을 로드합니다.
이 특정 커널 파일이 현재 디렉토리에 없으면 다음을 사용할 수 있습니다.경로 헤드라인(예: / tmp / core ).
where 명령( where 명령 참조)을 사용하여 비어 있을 때 전체 장치가 실행되고 있던 위치를 확인합니다.기초적인.
새 커널 아카이브를 디버깅할 때 범위와 표현식도 평가할 수 있습니다.어떤 종류의 프로그램이 충돌한 후 남겨진 값을 결정하기 위해dr 함수가 기록하는 표현식을 평가합니다. 한 단계나 한 가지 제안을 할 수 없습니까?제어점.
기본 파일이 잘린 경우
귀하와 귀하의 가족이 기본 파일 다운로드에 대해 걱정하는 경우 잘린 파일이 있는지 확인하십시오.기본 파일. 보고서 엔진에 허용되는 이 최대 크기가 너무 작게 결정된 경우커널 파일이 안전하게 제작된 경우 dbx 는 읽고 싶어도 읽을 수 없습니다.결과적으로 파일 코어가 확실히 줄어듭니다. C 셸에서 누군가는 최대 허용 위치를 지정할 수 있습니다. limit 명령을 사용하는 메인 인스티게이트의 길이입니다(각각의 limit (1) 매뉴얼 페이지 참조). 일부 Bourne 및 korn 셸에서는 각각의 ulimit 요청을 사용합니다( maximum (1) 매뉴얼 페이지 참조). 당신은 할 수 있습니다오른쪽 시드 커버링 파일, 부트 리소스에서 기본 파일 크기 제한을 변경합니다.파일을 추가로 실행한 다음 컴퓨터를 재부팅하여 생성된 람마를 음성으로 표시합니다.완전한 키 파일을 생성합니다.
현재 스택 세그먼트가 없는 상태에서 메인 파일이 불완전한 경우,스택 추적에 대한 더 중요한 정보는 사용할 수 없습니다. 링커 정보를 읽을 때이 누락된 경우 loadobjects를 사용할 수 없기 때문에 간단히 언급하십시오. 이 경우 당신은진정으로 항상 초기화하는 librtld_db.so 에서 의미 있는 멋진 오류 메시지를 받습니다.LWP 기능이 없으면 스트래핑, 정보,또는 lwp-bund의 추적 정보를 정상적으로 사용할 수 있습니다. 실행할 때 각 명령이 표시됩니다. 여기서 ,프로그램이 "활성화"되지 않았음을 나타내는 오류 아이디어가 나타납니다.
비준수 커널 파일 디버그
때때로 메인 문서는 설정(메인 호스트에서)에 있는 모든 사람에 의해 생성되며,이 기본 파일을 다른 장치(호스트 dbx )로 다운로드하고 싶습니다.디버그하십시오. 그러나 이 작업을 수행하는 동안 라이브러리에 두 가지 문제가 있는 것 같습니다.그래서:
<울><리>
프로그램에서 사용하는 로컬 라이브러리를 기본 호스트와 공유했습니다.로컬 라이브러리는 dbx 조직 라이브러리와 다를 수 있습니다. 이 특정 끝에서 실제 그룹이 되십시오.라이브러리에 영향을 주는 트랙의 경우 해당 원본 라이브러리 구축을 시작하려고 합니다.일반적으로 dbx-host에서 사용할 수 있습니다. 사용
<리>
구현 세부 사항, 모든 런타임 링커를 이해하기 위한 시스템 라이브러리 dbx 및 및 usr / lib 특정 시스템의 스레드 라이브러리. 당신은 또한 이것을 생각해야 할 수도 있습니다 dbx 가 가장 잘 이해할 수 있는 기본 호스트 시스템 라이브러리컴퓨터 파일 클러스터 및 스트림 데이터 구조의 런타임 링커.
편의 라이브러리 및 추가 시스템 라이브러리도 수정 사항의 결과로 변경될 수 있습니다.솔라리스 운영 환경에 대한 주요 업데이트와 같은 문제로 인해 이 문제는 더욱 심각해졌습니다.예를 들어 모든 실제 패치가 커널 이후에 설치된 경우 동일한 호스트에서 발생레지스터가 컴파일되었지만 이전에 커널에서 dbx 를 실행하고 있었습니다.파일.
dbx 는 다른 오류 또는 다음 오류를 표시할 수 있습니다.다음 "이해할 수 없는" 커널 파일을 로드할 때마다 나타나는 메시지:
공유 라이브러리 관련 문제
수정
라이브러리 문제를 해결하고 좋은 "비호환성"을 디버그하려면기본 적용
- <리>
dbx core_lo_pathmap 환경을 에서 로 조정하도록 설정합니다.
pathmap 명령 중 하나를 사용하여일반적으로 메인 파일에 대한 라이브러리를 처리하는 dbx 가 있습니다.
디버깅으로 debug 명령을 사용하고프로그램의 기본 파일.
유형의 경우 루트 섹션인 경우얻은 주 호스트는 NFS를 통해 내보내졌으며 dbx 마스터 재봉 PC에서 / net / core-host 대 를 통해 평가할 수 있습니다. 다음을 수행해야 합니다.디버깅을 위해 prog 프로그램과 최상위 prog file.core 프로그램에 기름을 바르는 명령:
(dbx) 의 core_lo_pathmap(dbx) 맵 경로 / usr / 목표 / core-host / usr (dbx) 경로 맵 및 앱스터프 / net / core-host / appstuff (dbx) 디버그 프로그램 prog.core
의심할 여지 없이 각 기본 호스트의 전체 루트 섹션을 내보내지 않는다면 초보자용 호스트가 필요합니다.라이브러리를 수동으로 복사합니다. 심볼릭 링크를 만들고 싶지 않습니다. (에게예를 들어, 사람이 libc.so.1 을 사용하도록 돕기 위해 libc from.so 를 연결하는 것보다 절대적으로 libc.so.1 을 사용할 수 있도록 만드십시오.)
기억해야 할 사항
비준수 기본 파일을 디버깅하는 경우 현명한 접근 방식을 취하십시오.
<울><리>
명령 케이블 경로 맵 이(가) 인식되지 않습니다.pathmap은 '/'로 끝나므로 특정 명령을 사용할 수 없습니다.
경로 맵 // net / core-host
<리>
일부 명령에 대한 단일 인수 모드 경로 위치 loadobject 경로와 함께 작동하지 않으며 실제로 이러한 from-path 인수를 사용합니다.쪽으로 모드.
<리>
이 dbx 호스트가또는 Solaris 운영 환경과 관련하여 동일하거나 최신 버전이 있을 수 있습니다.항상 필요한 것은 아니지만 기본 호스트로 사용합니다.
<리>
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
다음 시스템 라이브러리가 필요할 수 있습니다.
수업을 연결하려면:
/usr/lib/ld.so.1
/usr/lib/librtld_db.so.1
/usr/lib/64/ld.so.1
/usr/lib/64/librtld_db.so.1
<리>
스트리밍 라이브러리의 경우 라이브러리 구현 스레드 당신의:
/usr/lib/libthread_db.so.1
/usr/lib/64/libthread_db.so.1
/usr/lib/lwp/libthread_db.so.1
/usr/lib/lwp/64/libthread_db.so.1
소프트웨어
또는 usr / lib / lwp 에만 적용Solaris 8 운영 환경 및 에서 dbx를 스캠하는 경우 다음과 같은 경우에만 수행하십시오.또는 각 libthread 라이브러리를 사용할 수 있습니다.
너일반적으로 64비트 버전은 dbx 가 기껏해야 사용 가능한 64비트 버전을 지원하는 경우 xxx _db.so 컬렉션이 필요합니다.이 시스템의 Solaris OS 버전, 라이브러리가 배치되어 아직 사용 중입니다.대상 소프트웨어의 일부가 아닌 dbx 의 일부로.
ld.so.1 라이브러리는 종종 기본 이미지의 대상입니다.예를 들어 libc.so 파일 또는 기타 라이브러리가 필요하므로 32비트 라이브러리 ld.so.1 또는 64비트 연구 ld가 필요할 수 있습니다. 그런 사람. 1 상점파일에 중심을 만든 프로그램에 해당합니다.
<리>
원리를 찾고 있다면
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년core_lo_pathmap을 변경하는 dbx 상황을 포함합니다. my pathmap 명령을 사용하여 기본 파일에 맞는 올바른 라이브러리를 사용할 위치를 dbx에 알립니다. 디버그 명령을 사용하여 프로그램과 커널 파일을 확실하게 로드합니다.
실행하는 동안 Ctrl + 를 눌러 코어 덤프를 강제 실행하도록 허용합니다. 이제 다른 사람의 목록에서 기본 파일을 볼 수 있습니다. 이를 수행하기 위한 디버그 기호가 있는 실행 파일이 없기 때문에 많은 사람들이 기호 + 키를 사용하여 실행 파일의 gdb 옵션에서 기본 파일을 엽니다. 파일.
내 개인 바이너리가 디버그 기호로 컴파일되었는지 확인하십시오.ulimit와 아마도 커널을 정의하십시오. core_pattern이 맞습니다.프로그램을 실행합니다.gdb로 가비지 덤프를 열고 아이콘을 로드하고 bt를 실행하십시오.정확히 무슨 일이 일어 났는지 알아낼 것입니다!