Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

IDE, VCS и прочее

Модератор: Модераторы разделов

Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

Друзья! Всё просто.
1) Запускаю gdb и сразу передаю ему исполняемый файл foo
$ gdb foo
2) Ставлю бряк на первую строчку и откуда ни возьмись наблюдаю hello.asm. Откуда?!

Shell

(gdb) b 1
Breakpoint 1 at 0x401000: file hello.asm, line 7.
3) Показываю, что в текущей директории такого файла нет

Shell

(gdb) shell ls
foo
Всё вместе:

Shell

$ gdb foo
GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from foo...
(gdb) b 1
Breakpoint 1 at 0x401000: file hello.asm, line 7.
(gdb) shell ls
foo
(gdb)
ЧЯДНТ? Спасибо, кто откликнется. Debian 11
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение Bizdelnick »

Из отладочной информации, записанной в бинарнике. А подсунуть исходный файл отладчику — это уже Ваша забота.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

Bizdelnick писал:
18.08.2022 02:30
Из отладочной информации, записанной в бинарнике. А подсунуть исходный файл отладчику — это уже Ваша забота.
В том-то и дело, что я собираюсь работать исключительно с бинарным файлом. Странно всё это.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение Bizdelnick »

Ну так работайте, кто ж запрещает?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

Bizdelnick писал:
18.08.2022 02:50
Ну так работайте, кто ж запрещает?
так ерунду всякую пишет. Если подсунуть ему- даже не ему подсунуть, а просто положить в эту же директорию другой hello.asm, напишет, что
warning: Source file is more recent than executable.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение Bizdelnick »

А зачем Вы ему что-то подсовываете? Относитесь к этому просто как к дополнительной информации, не нужна — значит, игнорируйте.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

Bizdelnick писал:
18.08.2022 11:50
А зачем Вы ему что-то подсовываете? Относитесь к этому просто как к дополнительной информации, не нужна — значит, игнорируйте.

Если не подсовывать, то бряки будут ставиться всё равно в hello.asm, которого нет.
Если подсовывать неродной, тогда пошаговая трассировка очень интересная- по двум листингам- по сырцу и по ассемблеру. Причём сырец от одной программы, ассемблер от другой.
Получается, нужно ВСЕГДА подсовывать правильный исходник. А если нет такой возможности?
Вообще ни разу ничё не запутано.
...в общем, OllyDbg для отладки нужен был исключительно экзешник и он людей не путал поиском исходников. Вот там не было запутано.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение Bizdelnick »

жучара писал(а):
18.08.2022 12:07
Если не подсовывать, то бряки будут ставиться всё равно в hello.asm, которого нет.
Бряки ставятся в исполняемом коде. Какие строки исходника ему соответствуют — дополнительная информация для удобства.
жучара писал(а):
18.08.2022 12:07
Получается, нужно ВСЕГДА подсовывать правильный исходник. А если нет такой возможности?
А как закручивать шурупы шуруповёртом без биты? Ну вот так вот — зажимаете головку в патроне и крутите. Неудобно, а Вы чего хотели?
жучара писал(а):
18.08.2022 12:07
Получается, нужно ВСЕГДА подсовывать правильный исходник. А если нет такой возможности?
Не подсовывайте ничего.
жучара писал(а):
18.08.2022 12:07
Вообще ни разу ничё не запутано.
И кто бы мог всё запутать, создав левый hello.asm?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

А всего-то и надо, не искать исходник, если тебя об этом не просят. Ладно, чего уж там. Другого-то всё равно ничего нет.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение Bizdelnick »

https://sourceware.org/gdb/current/onlinedocs/gdb/Disable-Reading-Source.html#Disable-Reading-Source
Добавлено (14:09):
жучара писал(а):
18.08.2022 12:25
Другого-то всё равно ничего нет.
Да полно всего. Для расковыривания блобов без исходников лучше radare2, наверное.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

у меня говорит, что такой команды нет.

Shell

(gdb) set source open off
No symbol "source" in current context.
(gdb)
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение /dev/random »

жучара писал(а):
18.08.2022 19:24
у меня говорит, что такой команды нет.
Нужен gdb 12 или новее. Если у вас более старый, просто не обращайте внимания на информацию об исходниках.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

/dev/random писал:
18.08.2022 20:02
жучара писал(а):
18.08.2022 19:24
у меня говорит, что такой команды нет.
Нужен gdb 12 или новее. Если у вас более старый, просто не обращайте внимания на информацию об исходниках.
не обращать внимания нельзя. Можно и нужно правильно ставить бряки. В моём случае (работаем БЕЗ исходника, напомню), бряки нужно ставить на адрес памяти. То есть командуем как-то так:

Shell

(gdb) disassembly-flavor intel
(gdb) tui enable
(gdb) focus cmd
(gdb) layout asm
(gdb)
Это всё делаем, чтобы увидеть окно asm:

Shell

│ 0x401001 <_start+1> nop │
│ 0x401001 <_start+1> nop │
│ 0x401002 <_start+2> nop │
│ 0x401003 <_start+3> nop │
│ 0x401004 <_start+4> mov eax,0x3c │
│ 0x401009 <_start+9> mov edi,0x0 │
│ 0x40100e <_start+14> syscall │
Вот теперь ставим бряки куда нужно, например, так:

Shell

(gdb) b *0x40100e
Breakpoint 2 at 0x40100e: file hello.asm, line 12.
(gdb)
Вcё, бряк стоит на нужном адресе, на file hello.asm, line 12. не смотрим
------------------------------------------------------------------------------
Иначе же происходит смешное. Если ставим бряк так:

Shell

(gdb) b 7
, то gdb ОБРАЩАЕТСЯ к файлу hello.asm (где он его берёт- смотри ниже), ищет там седьмую строчку, учитывая ДАЖЕ ПУСТЫЕ СТРОКИ, которые были в исходнике *.asm Ну то есть если файл hello.asm был таким:
1 section .text
2 global _start
3
4
5 _start:
6 nop
7 nop
8 nop
9 nop
10 mov rax, 60
11 mov rdi, 0
12 syscall
то седьмая строка это 7 nop. Соответсвенно, бряк будет тут:
0x401002 <_start+2> nop

Это совсем не то, что нам нужно. Мы-то хотели, чтобы бряк был на
0x40100e <_start+14> syscall (седьмая строка в окне asm)

------------------------------------------------------------------------------

И последнее- где он берёт-то файл hello.asm, если его нет? А чёрт его знает, где он его берёт. Не иначе как этот файл запихан в отладочную информацию. Ну не генерит же он его- повторюсь, он учитывает даже пустые строки, которые были в исходном *.asm файле. Такие дела.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

Это очень интересная тема. Отладчик gdb может воспроизвести ассемблер, исходник и выводить параллельно раскладку различных групп регистров по бинарнику.
В запущенной gdb введите: (gdb) help layout
Еще часто встречаю что у gdb нет графического фронтенда и очень не удобно работать. Посмотри в сторону (gdb) help tui. Лучшего я не встречала. Например, чтобы не вводить все команды в преамбуле к самой отладке, создаю простой файл sc с командами. Допустим есть программа:

Shell

gcc -g tost.c -o tost
Создаю файл sc:

Код: Выделить всё

file tost
#set args one two three
tui enable
la split
fs p
b 1
r
Запускаю:

Shell

gdb -x sc
И получаю:
asm.png
asm.png (91.37 КБ) 2922 просмотра
reg.png
reg.png (112.55 КБ) 2922 просмотра
Можете прокручивать смещая фокус на нужную секцию fs n(ext) fs p(rev)
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

...и что интересно, исходник gdb откуда-то берёт, но если файла *.asm в текущей директории не будет, он его не покажет, а на layout src выдаст No Source Available. Прикольно. Исходник есть, но для внутренних тык скыть нужд.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

жучара
Что-то вы неправильно делаете. Мои показанные примеры, для чистоты эксперимента, работали только с одним бинарником в отдельной директории
Добавлено (15:51):
А вот удалила исходник из родительской директории и он стал "No Source Available"
Добавлено (16:00):
Нашла:
Set the source path to path-list. ‘$cdir:$cwd’ are added if missing.
Смотрит корневую директорию проекта если нет в текущей.
Последний раз редактировалось olecya 20.08.2022 16:09, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya писала:
20.08.2022 15:23
жучара
Что-то вы неправильно делаете.
что именно вам не удалось воспроизвести?
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

жучара
Да, мы так долго будем общаться. То я ваше сообщение пропущу, то вы мое :)
Добавлено (16:15):
Похоже добавляется в метаданные путь, где компилировался исходник. Например:

Код: Выделить всё

gcc -g tost.c -o tost
mkdir -p one/two
mv tost one/two
cd one/two
gdb -q tost
И исходник будет найден
Добавлено (16:26):
Но если переместить сам исходник то дебагер его не найдет
Добавлено (16:42):
Пришлось вручную указывать путь в отладчике:

Код: Выделить всё

(gdb) set directories /path/to/dir/
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya писала:
20.08.2022 16:10
жучара
Да, мы так долго будем общаться. То я ваше сообщение пропущу, то вы мое :)
я ваше сообщение ни одно не пропускал, а это не понял. Повторю:
жучара писал(а):
20.08.2022 16:06
что именно вам не удалось воспроизвести?
жалко, что вы не ответили на этот вопрос. Но попытаюсь наладить диалог. Для начала покажу (смотри команды в окне cmd), что gdb ставит бряки, опираясь на исходник, а потом покажу, что исходника нет в родительской директории и выше.
gdb.png
gdb.png (16.94 КБ) 2863 просмотра
. Ну а сам исходник вот
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya писала:
20.08.2022 16:10
Похоже добавляется в метаданные путь, где компилировался исходник. Например:
не совсем понятно, что значит метаданные. Если бы путь добавлялся в отладочную ифформацию исполняемого файла... Но он туда не добавляетcя, смотрим вывод
objdump -s hello
Опять же, в отладочной информации я не увидел текста исходника. Где он его берёт- чёрт его знает.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение Bizdelnick »

жучара писал(а):
20.08.2022 15:16
...и что интересно, исходник gdb откуда-то берёт, но если файла *.asm в текущей директории не будет, он его не покажет, а на layout src выдаст No Source Available. Прикольно. Исходник есть, но для внутренних тык скыть нужд.
Исходника нет. Есть только информация о том, какой файл и номер строки в нём какому смещению в тексте соответствуют, эта информация и используется для постановки бряков.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

Bizdelnick писал:
20.08.2022 20:53
жучара писал(а):
20.08.2022 15:16
...и что интересно, исходник gdb откуда-то берёт, но если файла *.asm в текущей директории не будет, он его не покажет, а на layout src выдаст No Source Available. Прикольно. Исходник есть, но для внутренних тык скыть нужд.
Исходника нет. Есть только информация о том, какой файл и номер строки в нём какому смещению в тексте соответствуют, эта информация и используется для постановки бряков.
И вот это вот скрывается за термином "отладочная информация"? Какой ужас...
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

жучара писал(а):
20.08.2022 18:40
не совсем понятно, что значит метаданные. Если бы путь добавлялся в отладочную ифформацию исполняемого файла... Но он туда не добавляетcя, смотрим вывод
Я сокращу немного свой вывод при помощи опции -j и названии секции:

Shell

objdump -sj .debug_line_str tost

tost: file format elf64-x86-64

Contents of section .debug_line_str:
0000 2f686f6d 652f6e65 7a2f432f 746f7374 /home/nez/C/tost
0010 692f6f6e 652f7477 6f00746f 73742e63 i/one/two.tost.c
0020 00
/home/nez/C/tosti/one/two - Это та директория где я только что собрала исполняемый файл с отладочной информацией и которая является подмножеством более общего понятия "метаданные" - вспомогательная информация. И это даже близко не сленг, такой как:
Bizdelnick писал:
18.08.2022 12:19
Бряки ставятся в исполняемом коде.
жучара писал(а):
20.08.2022 18:17
я ваше сообщение ни одно не пропускал
Значит мне так показалось, а я ваше перед моим первым комментарием прозевала, пока редактировала свои скриншоты.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya, вы tost как делали? Можно исходник и команду?
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

olecya писала:
20.08.2022 15:09

Shell

gcc -g tost.c -o tost
А содержание думала понятно будет из скриншота:

Код: Выделить всё

#include <stdio.h>

int main() {
    printf("%s\n", "Hello world!");
}
Добавлено (01:05):
Вот пример с ассемблерной программой:

Код: Выделить всё

        .global _start

        .text
_start:
        # write(1, message, 13)
        mov     $1, %rax
        mov     $1, %rdi
        mov     $message, %rsi
        mov     $13, %rdx
        syscall

        # exit(0)
        mov     $60, %rax
        xor     %rdi, %rdi
        syscall
message:
        .ascii  "Hello, world\n"

Shell

as --gstabs+ main.s -o main.o
ld main.o -o main

Shell

objdump -sj .stabstr main

main: file format elf64-x86-64

Contents of section .stabstr:
0000 006d6169 6e2e7300 2f686f6d 652f6e65 .main.s./home/ne
0010 7a2f432f 746f7374 692f6761 735f7379 z/C/tosti/gas_sy
0020 7363616c 6c2f00 scall/.
Новый путь к этому исходнику - /home/nez/C/tosti/gas_syscall
Если будете использовать опцию -g вместо гнутой --gstabs+ то секция будет называться .debug_str
и все равно будет последней в выводе.

Shell

gdb -q --tui main
gas.png
gas.png (82.63 КБ) 2796 просмотров
Последний раз редактировалось olecya 21.08.2022 02:26, всего редактировалось 3 раза.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya писала:
21.08.2022 00:19
olecya писала:
20.08.2022 15:09

Shell

gcc -g tost.c -o tost
А содержание думала понятно будет из скриншота:

Код: Выделить всё

#include <stdio.h>

int main() {
    printf("%s\n", "Hello world!");
}
у меня всё равно нет секции .debug_line_str; а gcc у вас какой версии? У меня вот:

Shell

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.1 20210110 (Debian 10.2.1-6)
$
Добавлено (01:10):
...Так реально мы ни до чего не договоримся. Я не сказал, а вы не спросили. У меня исходники на nasme и я компилю так:

Shell

nasm -g -f elf64 -o hello.o hello.asm
ld -o hello hello.o
У вас всё другое.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

жучара
Это было в федоре, сейчас гляну в debian
Добавлено (01:16):
В дебиан это секция .debug_str как и асемблере gas:
olecya писала:
21.08.2022 00:19
Если будете использовать опцию -g вместо гнутой --gstabs+ то секция будет называться .debug_str
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya писала:
21.08.2022 01:13
жучара
Это было в федоре, сейчас гляну в debian
Добавлено (21.08.2022 01:16):
В дебиан это секция .debug_str как и асемблере gas:
olecya писала:
21.08.2022 00:19
Если будете использовать опцию -g вместо гнутой --gstabs+ то секция будет называться .debug_str
ну да. И в ней нет полного пути к исходнику. Как, собсно и в других секциях. От чего ушли, к тому пришли- где он берёт исходник? Ну выше Безделник сказал, чё он делает.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 900
ОС: debian, fedora (i3-wm)

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение olecya »

жучара
Вот мой вывод в debian при компиляции ассемблерного кода гнутым компилятором as с опцией -g

Shell

objdump -sj .debug_str tost

tost: file format elf64-x86-64

Contents of section .debug_str:
0000 6c6f6e67 20756e73 69676e65 6420696e long unsigned in
0010 74007368 6f727420 756e7369 676e6564 t.short unsigned
0020 20696e74 00746f73 742e6300 73686f72 int.tost.c.shor
0030 7420696e 74002f68 6f6d652f 6e657a2f t int./home/nez/
0040 50726f6a 65637473 2f676462 00474e55 Projects/gdb.GNU
0050 20433137 2031302e 322e3120 32303231 C17 10.2.1 2021
0060 30313130 202d6d74 756e653d 67656e65 0110 -mtune=gene
0070 72696320 2d6d6172 63683d78 38362d36 ric -march=x86-6
0080 34202d67 202d6661 73796e63 68726f6e 4 -g -fasynchron
0090 6f75732d 756e7769 6e642d74 61626c65 ous-unwind-table
00a0 7300756e 7369676e 65642063 68617200 s.unsigned char.
00b0 6c6f6e67 20696e74 006d6169 6e00 long int.main.
Однозначно, путь к исходнику присутствует /home/nez/Projects/gdb. Ладно щас попробую установтиь nasm
Добавлено (02:00):
Компилятор nasm не сохраняет путь к исходнику. Если исполняемый файл переносится отдельно от сырцов, то необходимо в отладчике установить путь:
(gdb) set directories /path/to/dir
Возможно есть опции, но при беглом взгляде я не нашла. В секции .debug_info и .debug_line есть только имя исходника
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.

Сообщение жучара »

olecya писала:
21.08.2022 01:36
Компилятор nasm не сохраняет путь к исходнику. Если исполняемый файл переносится отдельно от сырцов, то необходимо в отладчике установить путь:
а зачем? Он и так превосходно ставит бряки с учётом исходника, которого нет, о чём я написал здесь
Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.
а Бездельник здесь
Re: Почему отладчик gdb обращается к какому-то файлу *.asm, которого нет в помине.
объяснил.
Я просто читаю маны.
Спасибо сказали:
Ответить