Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/hft_dev/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Один микросек - C++, low latency, concurrency, HFT@hft_dev P.75
HFT_DEV Telegram 75
GDB позволяет вводить команды из файла

Приведу несколько примеров. Поставить breakpoint с условием:
> cat 1.gdb

break my_func if (var > 10000)
commands
print var
info locals
info registers
backtrace
continue
end


Поставить одноразовый catch на write syscall:
tcatch syscall write
commands
printf "Syscall write\n"
printf "File descriptor: %d\n", $rdi
printf "Buffer: %p\n", $rsi
printf "Bytes: %d\n", $rdx
continue
end


Объявить функцию, которая принимает адрес и ставит условный watch на этот адрес:
define my_int_watch
watch *(int*)$arg0 if *(int*)$arg0 % 3 == 0
commands
printf "New value: %d\n", *(int*)$arg0
continue
end
end


Реальные сценарии как правило чуть сложнее, т.к. дебаг символов может и не быть, условия посложнее, но для демонстрации идеи эти подходят.

Далее команды можно запустить из файла:
gdb -p 1234 -x 1.gdb

или прямо в cli:
> source 1.gdb


Да, то же самое можно ввести вручную поэтапно в cli, однако ручной ввод комманд требует времени, что может быть непозволительно в уже запущенных программах, которые нельзя прерывать.

GDB также умеет в Python скрипты, но на питоняке я писал только pretty-printer'ы. Кто-то использовал python в gdb?
🔥15👍2



tgoop.com/hft_dev/75
Create:
Last Update:

GDB позволяет вводить команды из файла

Приведу несколько примеров. Поставить breakpoint с условием:

> cat 1.gdb

break my_func if (var > 10000)
commands
print var
info locals
info registers
backtrace
continue
end


Поставить одноразовый catch на write syscall:
tcatch syscall write
commands
printf "Syscall write\n"
printf "File descriptor: %d\n", $rdi
printf "Buffer: %p\n", $rsi
printf "Bytes: %d\n", $rdx
continue
end


Объявить функцию, которая принимает адрес и ставит условный watch на этот адрес:
define my_int_watch
watch *(int*)$arg0 if *(int*)$arg0 % 3 == 0
commands
printf "New value: %d\n", *(int*)$arg0
continue
end
end


Реальные сценарии как правило чуть сложнее, т.к. дебаг символов может и не быть, условия посложнее, но для демонстрации идеи эти подходят.

Далее команды можно запустить из файла:
gdb -p 1234 -x 1.gdb

или прямо в cli:
> source 1.gdb


Да, то же самое можно ввести вручную поэтапно в cli, однако ручной ввод комманд требует времени, что может быть непозволительно в уже запущенных программах, которые нельзя прерывать.

GDB также умеет в Python скрипты, но на питоняке я писал только pretty-printer'ы. Кто-то использовал python в gdb?

BY Один микросек - C++, low latency, concurrency, HFT


Share with your friend now:
tgoop.com/hft_dev/75

View MORE
Open in Telegram


Telegram News

Date: |

ZDNET RECOMMENDS Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. fire bomb molotov November 18 Dylan Hollingsworth yau ma tei Hui said the time period and nature of some offences “overlapped” and thus their prison terms could be served concurrently. The judge ordered Ng to be jailed for a total of six years and six months. With the sharp downturn in the crypto market, yelling has become a coping mechanism for many crypto traders. This screaming therapy became popular after the surge of Goblintown Ethereum NFTs at the end of May or early June. Here, holders made incoherent groaning sounds in late-night Twitter spaces. They also role-played as urine-loving Goblin creatures.
from us


Telegram Один микросек - C++, low latency, concurrency, HFT
FROM American