我使用如下命令在后台启动 gdb 会话:
gdb --batch --command=/tmp/my_automated_breakpoints.gdb -p pid_of_proces> &> /tmp/gdb-results.log &
Run Code Online (Sandbox Code Playgroud)
最后的&让它在后台运行(并且 shell 之后立即关闭,因为该命令是由单个ssh命令发出的)。
我可以通过找到会话pid的内容。gdbps -aux | grep gdb
但是:我怎样才能优雅地从正在运行的进程中分离这个 gdb 会话,就像我使用命令在我面前的终端会话一样(gdb) detach?
当我使用 终止 gdb 会话(而不是正在运行的进程本身)时kill -9 gdb_pid,我会SIGABRT在运行的程序中得到不需要的 s 。
对于我的目的来说,重新启动服务太耗时。
如果使用此自动化脚本成功进行调试会话,我可以在批处理脚本中使用分离命令。但这不是我的情况:当会话期间出现一些错误时,我想分离/退出正在运行的 gdb 会话,因此我想从另一个终端会话中手动优雅地分离 gdb。
我对可用的django中间件感到完全困惑:
我只是想让密码重置(以及以后的密码更改)功能运行,在后端使用djangowith rest_auth并在前端使用Vue。
到目前为止,我已经做了CustomPasswordResetView:
# project/accounts/views.py
from rest_auth.views import PasswordResetView
class CustomPasswordResetView(PasswordResetView):
pass
Run Code Online (Sandbox Code Playgroud)
和一个CustomPasswordResetSerializer:
# project/accounts/serializers.py
from rest_auth.serializers import PasswordResetSerializer
class CustomPasswordResetSerializer(PasswordResetSerializer):
email = serializers.EmailField()
password_reset_form_class = ResetPasswordForm
def validate_email(self, value):
# Create PasswordResetForm with the serializer
self.reset_form = self.password_reset_form_class(data=self.initial_data)
if not self.reset_form.is_valid():
raise serializers.ValidationError(self.reset_form.errors)
###### FILTER YOUR USER MODEL ######
if not get_user_model().objects.filter(email=value).exists():
raise serializers.ValidationError(_('Invalid e-mail address'))
return value
def save(self):
request = self.context.get('request')
# Set some values to …Run Code Online (Sandbox Code Playgroud) python django django-rest-framework django-allauth django-rest-auth