LINUX.ORG.RU

Не знаю, чем обоснованы эти ограничения, но установка этой опции работает только при исполняющейся программе.

Хуки на команды, вроде, позволяют это автоматизировать:

define hookpost-run
    set scheduler-locking on
end
define hookpost-start
    set scheduler-locking on
end
define hookpost-attach
    set scheduler-locking on
end

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от xaizek

У меня почему-то hookpost-run срабатывает уже после того, как я остановлю программу командой stop (проверял добавлением во все хуки echo, плюс show scheduler-locking). А IDE (ага, я IDE-кун) именно run делает.

RiseOfDeath ★★★★
() автор топика
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от RiseOfDeath

В консоли, вроде, всё нормально. Можно такой вариант сделать, хотя не уверен, что будет разница:

define hookpost-run
    break main
    commands
    silent
    set scheduler-locking on
    cont
end
Возможно, IDE передаёт gdb флаги вроде -nh и потом сама команды подгружает неправильно. Либо хуки выполняются как-то иначе. А вот как это побороть не знаю, с другой стороны в IDE может есть где задать дополнительные команды для gdb после run.

xaizek ★★★★★
()
Ответ на: комментарий от RiseOfDeath

Я так проверил только что:

define hookpost-run
    set scheduler-locking on
    echo \nPOST-RUN:\n
    show scheduler-locking

    break main
    commands
        echo \nLOCK-CHECK:\n
        show scheduler-locking
        continue
    end
end
Вывод:
$ gdb --version
GNU gdb (GDB) 7.11
...
$ gdb vifm
Reading symbols from vifm...done.
(gdb) r
Starting program: /home/xaizek/bin/vifm

POST-RUN:
Mode for locking scheduler during execution is "on".
Breakpoint 1 at 0x48444c: file vifm.c, line 116.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Breakpoint 1, main (argc=1, argv=0x7fffffffe258) at vifm.c:116
116             char **files = NULL;

LOCK-CHECK:
Mode for locking scheduler during execution is "on".
[Inferior 1 (process 4551) exited normally]
(gdb)

xaizek ★★★★★
()
Ответ на: комментарий от xaizek
# gdb myprog
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 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:
<http://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 myprog...done.
(gdb) start
Starting program: /usr/bin/myprog
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

хотя, я кажется догадался в чем причина: GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1

RiseOfDeath ★★★★
() автор топика
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от RiseOfDeath

хотя, я кажется догадался в чем причина: GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1

Может быть, если был баг какой-то, в NEWS файле не вижу ничего связанного с хуками.

Кстати, пример выше можно использовать с pre-хуком:

define hook-run
    break main
    commands
        silent
        set scheduler-locking on
    cont
end

Может так сработает.

xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.