首页
学习
活动
专区
圈层
工具
发布

Emacs 折腾记

在 Windows 下推荐安装到默认路径。我尝试过更改路径安装,比如安装到 D 盘,但是运行时会提示在 C 盘的某个路径下找不到 sbcl.core 文件。...Update: 后来经验证,发现实际上是 sbcl 在安装过程中写的环境变量没有生效导致的,sbcl 在安装过程中会设置两个环境变量,新建一个 SBCL_HOME 值为 sbcl 安装路径,在 PATH...Files (x86)/sbcl/lib/sbcl//sbcl.core 而此时即使完成了后面的步骤,在 Emacs 中运行 slime 会提示 apply: Searching for program...python % 来运行的,但是在 Emacs 里,包括 Evil、eshell、shell 里,如果有等待用户输入的语句如 input 或 raw_input 等,因为 Emacs 只重定向了输出,无法重定向输入...在 ~/.emacs 里添加 (server-start) 这样 Emacs 将在打开时启动一个 Server。

2.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    调试程序时,断点是如何工作的?

    调试器会修改程序中断点所在位置的机器指令,通常将指令替换为一条特殊的陷入指令(如INT 3在x86架构中,或BKPT在ARM架构中)。...3、中断与异常机制 无论是软件断点还是硬件断点,当程序执行到断点时,都会触发一个中断或异常。 在CPU触发中断时,操作系统会根据中断号(或异常类型)查找异常向量表,找到对应的中断处理程序。...当中断发生时,操作系统需要保存当前程序的执行状态(如寄存器、程序计数器等),然后将控制权交给调试器或操作系统内核。 这一过程被称为上下文切换。...条件断点:在某些调试工具中,断点可以设置条件,即只有当某些特定条件成立时,程序才会在断点处暂停。例如,只有当变量x的值为100时,程序才会在该位置暂停。...数据断点:某些调试器支持数据断点,也就是设置在某个内存地址上的“监视点”,当某个内存位置的内容发生变化时,调试器会暂停程序。

    45910

    Redis Lua脚本调试

    这意味着在调试Redis Lua脚本时,服务器不会阻塞并可用于开发或者为了并行执行多个调试会话。...请注意,启动调试器时,它将以步进模式启动。它将停止在脚本的第一行,它在执行之前实际执行某些操作。 从这一点开始,您通常会调用step以执行该行并转到下一行。...如果您使用continue以执行脚本直到下一个断点,则不会将命令转储到屏幕上以防止输出过多。 终止调试会话 当脚本自然终止时,调试会话结束并 redis-cli以正常的非调试模式返回。...但是,为了跟踪某些错误,您可能希望保留每个调试会话对密钥空间执行的更改。当这是一个好主意,你应该使用一个特殊的选项,启动调试器ldb-sync-mode中redis-cli。 ....如果你只是中断redis-cli脚本将完全执行,然后会话终止。相反,abort您可以在中间中断脚本执行,并在需要时启动新的调试会话。

    2.9K50

    Visual Studio 调试系列3 断点

    例如,你可能想要查看代码变量的状态或查看调用堆栈的某些断点。 01 在源代码中设置断点 可以在任意可执行代码行上设置断点。...调试时,执行的断点处暂停,在执行该行上的代码之前。 断点符号显示黄色箭头。 ? 当调试器在断点处停止时,您可以查看应用程序,包括变量值和调用堆栈的当前状态。...调用堆栈断点显示在断点窗口具有对应于在函数中的下一步可执行指令的内存位置的地址。 调试器在指令处中断。 ? ? 03 在反汇编窗口中设置断点 若要打开反汇编窗口中,您必须在调试期间暂停。...如果在指定断点条件时使用的语法有效但语义无效,则在第一次命中断点将出现警告消息。 在任一情况下,调试器将中断时它会命中断点无效。 仅在条件有效且计算结果为 false时才会跳过断点。...10 断点已成功设置 (无警告),但未命中 本部分提供信息以对问题进行故障排除时调试器未显示任何警告 – 断点是一个实心的红色圆时主动进行调试,但未命中断点。

    6.5K20

    Visual Studio 调试系列9 调试器提示和技巧

    在某些应用场景中,如果变量超出范围,变量的值甚至可能会发生变化,因此你可能需要密切关注它(例如,变量可能会被当做垃圾回收掉)。你可以在监视窗口中为该变量创建一个对象 ID 来跟踪这个变量。...对于几个其他类型如调试器窗口中显示的数据集和 DataTable 对象,还可以打开内置的可视化工具。 09 在已处理的异常处中断代码 调试器会在未经处理的异常处中断代码。...可以将调试器配置为在已处理的异常处中断代码,方法是配置异常设置对话框中的选项。 要打开这个对话框,请选择调试 > 窗口 > 异常设置。 通过异常设置对话框,你可以让调试器在特定异常处中断代码。...12 将调试器附加到您的应用程序 若要附加到正在运行的应用,调试器将加载为想要调试的应用的相同内部版本生成的符号 (.pdb) 文件。 在某些情况下,了解符号文件的一些知识非常有用。...在调试时,通过选择调试 > 窗口 > 模块 打开模块窗口。 模块窗口可以告诉你,调试器将哪些模块视为用户代码或我的代码,以及符号加载模块的状态。

    4K10

    高级调试技巧揭秘:深入了解gdb调试正在运行的进程

    调试器与进程的交互主要通过以下方式进行:断点设置:断点是在程序中设置的一个特殊位置,当程序执行到该位置时,会触发调试器的暂停操作,可以观察程序的状态和变量的值。...观察点设置:观察点是在程序中设置的一个条件,当满足该条件时,调试器会触发暂停操作,使得可以观察特定变量的值或程序的状态。...在某些情况下,调度器锁定可能会导致多线程程序的调试变得困难。调试并发执行的线程:查看线程信息:通过调试器的命令info threads可以查看当前程序中所有线程的信息,包括线程ID、当前位置等。...使用日志和调试输出:在多线程程序中添加适当的日志和调试输出语句,可以跟踪程序的执行流程和线程间的交互。这些输出可以提供有关线程执行顺序和状态的信息。...使用gdb进行性能分析、优化代码和查找瓶颈:编译代码时添加调试符号以便在调试器中查看源代码和变量信息。使用gdb启动程序并设置断点,以便在关键代码段中断程序。

    1K00

    调试器之工作原理

    调试器之工作原理 之前对于调试器并没有什么了解,对于很多问题也没什么头脑,比如说attach是怎么做到的,怎么实现运行时断点的。今天来简单了解一下调试器部分功能的工作原理。...以x86的INT3指令为例,在一个位置设置断点后会保存该位置的原指令,之后在该位置写入INT3,当执行到这条指令的时候发生软中断,内核向子进程发送SIGTRAP信号,之后这个信号转发给父进程,此时再用保存的指令替换之前写入的...硬件断点 某些cpu包含调试用的寄存器,通过设置对应的值来控制对应产生中断的pc位置以及一些其他信息。...x86 debug register - Wikipedia cpu在执行代码之前会先确定要执行的地址是否保存在中断寄存器中,同时确认访问的地址是否处于设置了硬件断点的区域内,满足条件后会触发INT1中断...对于常规的调试和attach的本质区别自然是进程间的关系,直接调试中调试器进程和被调试进程互为父子进程,而attach时两者是独立的,也因此有的时候attch会需要管理员权限。

    86210

    如何解决STM32待机模式无法下载程序问题

    为了解决这个问题,你可以通过以下几种方式来避免进入待机模式或使MCU能够响应调试器: 1.1 使用复位键 在STM32的许多型号中,当MCU处于待机模式时,可以通过按住复位键来强制将其复位,从而跳出待机模式...STM32支持通过某些外设(如外部中断引脚)从待机模式唤醒。 通过在待机模式下配置外部中断(例如,按键或外部信号)来唤醒MCU,然后通过调试接口进行下载。...如果设备处于掉电模式时,某些外设和调试接口仍然保持可用。 2 设置MCU的启动选项 有些STM32型号支持在启动时选择不同的启动模式。 可以在启动模式中设置“低功耗启动”以避免快速进入待机模式。...2.2 修改Boot配置 可以通过外部引脚(如BOOT0)来选择MCU的启动方式,确保MCU在复位时不会直接进入待机模式。 例如,确保BOOT0设置为0,选择系统正常启动,而非直接进入低功耗模式。...5 软件层面避免进入待机模式 在某些情况下,可能在程序代码中不小心让MCU进入了待机模式,导致后续调试无法进行。 你可以在代码中添加防止进入待机模式的逻辑。

    54410

    CPU 指令 INT n 的深度解析

    例如,当执行 INT 0x21 时,CPU 会从 IVT 中的第 0x21 个条目读取中断服务例程的地址,并跳转到该地址执行相应的代码。...例如,某些硬件中断(如系统时钟)优先级高于软件中断。优先级的设定由硬件电路(如中断控制器)和操作系统共同决定。3. INT n 的实际应用(1) 系统调用在操作系统中,INT n 常用于实现系统调用。...(3) 调试功能调试器(如 GDB)通常使用中断指令(例如 INT 3)实现断点设置。当执行到断点时,INT 3 会触发调试器接管控制权。4....int 21h 调用中断,完成字符串输出。mov ah, 4Ch 指定程序终止功能号。int 21h 再次调用中断,终止程序。5....未来,在某些嵌入式系统或者复古计算机模拟中,INT n 仍将扮演重要角色,为我们提供解决问题的思路和工具。

    32010

    如何解决 “Error: Flash Download failed - Target DLL has been cancelled” 错误问题

    Target DLL has been cancelled:意味着目标设备的动态链接库(DLL)操作被中断或取消,可能是由于某些条件不满足,导致下载过程被迫中止。...常见连接问题包括: 连接线松动或接触不良:在进行固件下载时,JTAG 或 SWD 调试器的连接线必须牢固连接。如果连接线松动或接触不良,信号传输会中断,导致下载失败。...2.2 软件配置问题 如果软件配置不正确,可能导致调试器无法正确识别目标设备,从而无法完成下载。 常见的软件配置问题: 目标设备未正确选择:在使用调试工具时,必须确保所选目标设备与实际硬件匹配。...2.3 硬件问题 硬件问题也可能导致这个错误,尤其是在目标设备本身出现故障时。...例如,某些设备具有保护模式,需要通过特定的命令或工具解除保护。 检查 Boot 模式:确保目标设备不处于只读或保护模式。某些设备在启动时会进入保护模式,导致无法进行固件下载。

    5.6K10

    4.10 x64dbg 反汇编功能的封装

    在x64dbg中,软件断点的实现原理与通用的软件断点实现原理类似。具体来说,x64dbg会在程序的指令地址处插入一个中断指令,一般是int3指令。...这个指令会触发一个软件中断,从而让程序停止执行,等待调试器处理。在插入中断指令之前,x64dbg会先将这个地址处的原始指令保存下来。...这样,当程序被调试器停止时,调试器就可以将中断指令替换成原始指令,让程序恢复执行。 为了实现软件断点,x64dbg需要修改程序的可执行代码。...具体来说,它会将指令的第一个字节替换成中断指令的操作码,这样当程序执行到这个指令时就会触发中断。...另外,由于软件断点会修改程序的可执行代码,因此在某些情况下,设置过多的软件断点可能会影响程序的性能。

    35820

    4.10 x64dbg 反汇编功能的封装

    这个指令会触发一个软件中断,从而让程序停止执行,等待调试器处理。在插入中断指令之前,x64dbg会先将这个地址处的原始指令保存下来。...这样,当程序被调试器停止时,调试器就可以将中断指令替换成原始指令,让程序恢复执行。为了实现软件断点,x64dbg需要修改程序的可执行代码。...具体来说,它会将指令的第一个字节替换成中断指令的操作码,这样当程序执行到这个指令时就会触发中断。...如果指令长度不足一个字节,x64dbg会将这个指令转换成跳转指令,跳转到另一个地址,然后在这个地址处插入中断指令。此外在调试器中设置软件断点时,x64dbg会根据指令地址的特性来判断是否可以设置断点。...另外,由于软件断点会修改程序的可执行代码,因此在某些情况下,设置过多的软件断点可能会影响程序的性能。

    41530

    在生产环境中使用 eBPF 调试 GO 程序

    简介 在调试时,我们通常对了解程序的状态感兴趣。这使我们能够检查程序正在做什么,并确定缺陷在代码中的位置。观察状态的一种简单方法是使用调试器来捕获函数的参数。...调试器会导致程序中断,甚至允许修改状态,这可能会导致软件产生意外故障。 为了更好地捕获函数参数,我们将探索使用 eBPF(在 Linux 4.x+ 中可用)以及高级的 Go 程序库 gobpf。...从功能上讲,eBPF 允许你在某些事件(例如定时器,网络事件或函数调用)触发时运行受限的 C 代码。...Uprobe uprobe 可以通过插入触发软中断的调试陷阱指令(x86 上的 int3)来拦截用户态程序。这也是调试器的工作方式。uprobe 的流程与任何其他 BPF 程序基本相同,如下图所示。...当我们需要观察二进制程序的状态时,BPF 很有用,甚至在连接调试器会产生问题或者坏处的环境(例如生产环境二进制程序)。最大的缺点是,即使是最简单的程序状态的观测性,也需要编写代码来实现。

    1.7K10

    VS Code C#调试完全指南

    成功加载的项目在解决方案资源管理器中会显示清晰的文件层级,包含源代码文件(如 Program.cs)、依赖项和编译输出文件夹(bin、obj): 提示:首次打开项目时,C#扩展会自动在 .vscode...“模5中断”:循环调试的命中次数控制 在处理循环逻辑(如批量数据处理、数组遍历)时,若需要每N次执行中断一次(如每5次迭代检查状态),可通过“命中次数”功能实现精准控制: 右键循环体内的断点,选择“编辑断点...(1000); } 修改代码:在调试暂停时,将循环内的增量逻辑改为 i += 2(或直接修改输出值计算方式)。...筛选目标异常:在搜索框输入异常类型名称(如 ArgumentNullException),勾选「抛出时中断」选项,确保调试器在该异常发生时自动暂停程序。...编译错误会直接阻断调试器的启动流程。 断点显示灰色(无法命中断点) 现象:在代码行左侧设置断点后,断点图标显示灰色(而非正常の红色圆点),调试时程序不会在该位置暂停。

    20510

    Linux进程状态详解:僵尸进程与孤儿进程的深度探索与实践

    常见的情况包括: 等待输入/输出(I/O)操作完成:当一个进程发起I/O操作(如读取文件、等待网络数据)时,如果I/O操作还没有完成,进程会进入阻塞状态,直到I/O操作完成。...如果在输出期间终端忙碌或缓冲区满,操作系统会将进程暂时挂起,进入 可中断睡眠态(S)。 将 while 循环中的打印去掉再去执行代码看看进程状态。...2.4 T停止状态(stopped) 在Linux操作系统中,**停止状态(stopped)**是进程的一种状态,通常表示进程被挂起,等待某些条件或操作。...调试器控制: 调试器(如 gdb):当你使用调试工具进行调试时,调试器会将目标进程暂停,以便开发者检查和修改程序的状态。调试器会发送 SIGSTOP 信号,进程因此进入停止状态。...3.2 僵尸进程的特点: 状态为“Z”:在 ps 或 top 命令的输出中,僵尸进程的状态通常显示为 Z(Zombie)。

    32510

    第 1 部分: 在生产环境中使用 eBPF 调试 Go 程序

    简介 在调试时, 我们通常对了解程序的状态感兴趣. 这使我们能够检查程序正在做什么, 并确定缺陷在代码中的位置. 观察状态的一种简单方法是使用调试器来捕获函数的参数....在开发环境中, Delve 和 GDB 工作得很好, 但是在生产环境中并不经常使用它们. 那些使调试器强大的特性也让它们不适合在生产环境中使用....调试器会导致程序中断, 甚至允许修改状态, 这可能会导致软件产生意外故障....从功能上讲, eBPF 允许你在某些事件(例如定时器, 网络事件或函数调用)触发时运行受限的 C 代码....当我们需要观察二进制程序的状态时, BPF 很有用, 甚至在连接调试器会产生问题或者坏处的环境(例如生产环境二进制程序). 最大的缺点是, 即使是最简单的程序状态的观测性, 也需要编写代码来实现.

    1.4K11

    Windows应用程序调试原理全景图

    因此,经常我们的程序发生缓冲区溢出时,会看到大量的“烫烫烫…”,这是因为“烫”的编码正是两个0xCC。   那么?为什么int 3可以让程序中断到调试器呢?...然后使用F5调试运行,输出的内容如下: ? 可以看到,在调试状态下读取到的内容成了0xCC,就是一条int 3指令。这印证了前面的描述。...在保护模式下,它指向了一个具有8*256项的一张表——IDT,中断描述符表。表中指定了当每个中断(或陷阱)出现时,CPU将要执行的处理函数——ISR,中断服务例程。...int 3断点完整过程 至此,对于一个int 3断点中断到调试器的完整过程简化如下描述:   Step 1: CPU执行 int 3时,将通过IDTR寄存器从其中断描述符表中获取中断服务例程,也就是nt...回到Ring3后,调试器交互界面便开始等待我们的操作。这个时候我们的程序看到的现象就是中断到了调试器。

    1.4K20

    Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序

    在某些情况下,这是一种将应用部署的快速方法。 创建发布设置文件时,权限自动将会在 IIS 中设置。 部署发布到本地文件夹并将输出的首选方法复制到 IIS 上的已准备好应用程序文件夹。...在某些情况下,用户名列显示你的应用程序池名称,如IIS APPPOOL\DefaultAppPool。...应在 Visual Studio 中命中断点。 13 故障排除:Windows Server 上打开所需的端口 在大多数设置中,通过安装ASP.NET和远程调试器来打开所需的端口。...所需端口: 80 - IIS必需 4024 - 从Visual Studio 2019进行远程调试时需要(有关详细信息,请参阅远程调试器端口分配)。...UDP 3702 - (可选)在Visual Studio中附加到远程调试器时,发现端口使您可以使用“ 查找”按钮。

    5K10

    基于FPGA的轻量级RISCV SoC

    T3:BIU发出准备好信号, 同时把指令通过BIU的指令输出总线输出给指令解码单元(INS_DEC)开始指令解码。...T3:保持T2状态,当rdy=1时候,在下一个时钟沿进入T4状态,否则等待在T3状态 T4:保持T3状态,在T4周期结束的时候进行数据采样,同时回到等待状态TW。...该定时器在MTIME计时到MTIMECMP之后会产生定时器中断,只有当程序更新了MTIME或者MTIMECMP寄存器之后中断才会被清除。...FLASH部分使用额外的74系列逻辑芯片搭建了复用器,在调试器对系统进行复位时(/RESET为低),此时复用器将FLASH的引脚切换给调试器的MOSI、MISO、SCK、CS使用。...在/RESET为0时(即系统复位), 调试器作为SPI从机,MOSI,MISO,SCK,CS引脚控制系统主板上的外部FLASH;在/RESET为高(即系统正常工作)时,MOSI,MISO,SCK为SoC

    3.7K42
    领券