- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一个小型 C 程序从 hpux 迁移到 linux。该项目编译良好,但在运行时崩溃,显示段错误。我已经尝试使用 strace 和 gdb 查看镜子背后的情况,但仍然不明白。相关(截断)部分:
tts_send_2.c
包含一个方法
int sequenznummernabgleich(int sockfd, char *snd_id, char *rec_id, int timeout_quit) {
TS_TEL_TAB tel_tab_S01;
int n;
# truncated
}
从该文件中调用,如下所示:
. . .
. . .
switch(sequenznummernabgleich(sockfd,c_snd_id,c_rec_id,c_timeout_quit)) {
/* kritischer Fehler */
case -1:
. . .
. . .
当调用该方法时,我遇到了段错误(gdb 输出):
Program received signal SIGSEGV, Segmentation fault.
0x0000000000403226 in sequenznummernabgleich (sockfd=<error reading variable: Cannot access memory at address 0x7fffff62f94c>,
snd_id=<error reading variable: Cannot access memory at address 0x7fffff62f940>, rec_id=<error reading variable: Cannot access memory at address 0x7fffff62f938>,
timeout_quit=<error reading variable: Cannot access memory at address 0x7fffff62f934>) at tts_snd_2.c:498
498 int sequenznummernabgleich(int sockfd, char *snd_id, char *rec_id, int timeout_quit) {
我就是不明白。当我单步执行到使用 gdb 调用该方法的行时,所有变量看起来都很好:
1008 switch(sequenznummernabgleich(sockfd,c_snd_id,c_rec_id,c_timeout_quit)) {
(gdb) p sockfd
$9 = 8
(gdb) p &sockfd
$10 = (int *) 0x611024 <sockfd>
(gdb) p c_snd_id
$11 = "KR", '\000' <repeats 253 times>
(gdb) p &c_snd_id
$12 = (char (*)[256]) 0xfde220 <c_snd_id>
(gdb) p c_rec_id
$13 = "CO", '\000' <repeats 253 times>
(gdb) p &c_rec_id
$14 = (char (*)[256]) 0xfde560 <c_rec_id>
(gdb) p c_timeout_quit
$15 = 20
(gdb) p &c_timeout_quit
$16 = (int *) 0xfde660 <c_timeout_quit>
我还创建了一个 strace 输出。这是关于上面显示的代码的最后一部分:
有什么想法吗?我已经在网络和 stackoverflow 上搜索了几个小时,但没有找到真正类似的案例。
谢谢
克里兹
最佳答案
我已经很久没有使用过 HP/UX 了,但对于以下建议的内存却很模糊:
确保正确初始化变量/支柱。使用 calloc 而不是 malloc。
也不要假设特定的位模式顺序:例如低字节然后高字节。机器的 Ska 字节序。编译器中通常有宏可以为您处理适当的顺序。
关于c - 段错误: C-Program migrating from HPUX to Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40054368/
我需要在 HPUX(Itanium 和 PARISC)中获取用于交换信息的命令。 最佳答案 这是 unix.stackexchange 的链接那对我有帮助。谢谢@乔纳森 /usr/sbin/swapi
以下程序在 HPUX 上返回不正确的值 {-1,0,-1},而如果我在 Linux 上运行相同的程序,它对于区域设置“de_DE.iso885915@euro”可以正常工作。 HPUX wcwidth
我真的不明白这里出了什么问题,所以我希望有人能发现我错过的东西。 我正在编写一个用户守护程序,它接受我用 java 开发的客户端。目前该客户端仅连接并发送用户名密码。我在 cygwin 下开发了代码并
我编写了一个类似于我在项目中遇到的问题的小程序。问题是,为什么在HP-UX平台上运行会崩溃? 错误: si_code: 1 - BUS_ADRALN - 无效地址对齐 代码: int main() {
哦Sun 操作系统、UTS、AIX 等但是,当同一程序在另一端使用 HP UX 运行时,我们是无法接收来自 HP UX 框 (B.11.31 O/S) 的响应。 sSocket = socket(AF
我想在没有 root 权限的情况下使用 C++ 代码获取正在运行的进程(可执行文件)的完整路径。有人可以建议实现这一目标的方法。 在 Linux 平台上,我可以使用以下方式来完成。 char exep
我想知道是否有可能运行/转换/编译/重新编译一个小的 c# 程序,任务是调用一个 web 服务并将通常的 xml 文件传递给 unix。 unix 版本如 HP ux 11.23(2003 年发布
我正在编写一个用户守护程序,当用户登录时,我想确保用户是启动该守护程序的人。原因是,我需要一些运行命令的方法,这可能会花费很多时间。为此使用 nohup 有一些缺点,比如我不能再与进程交互,所以守护进
我正在获取 hpux 机器的版本号并尝试使用 atof 将其转换为 float ,但发生了这种情况: #include #include int main(int argc, char *argv
我在 HPUX C 程序中看到以下代码: extern int fcntl __((int, int, ...)); _LF_EXTERN int creat __((const char
我想我明白为什么我需要 LD_PRELOAD set当加载一个多线程应用程序加载一个加载 libcl.2 的单线程库时,但我想知道我是否可以使用一些链接器设置来避免这种情况。任何帮助表示赞赏。 更新:
我尝试从源代码编译 ncurses-5.7,运行 ./configure 后出现以下错误: configure: error: Your compiler does not appear to rec
我正在尝试调试使用 libevent 库的代码。在该库中,有一个函数 event_new 假设创建一个 event_cb。不知何故,在我分派(dispatch)事件库后,无法调用或访问 event_c
我在我的程序中使用了 select 调用,它适用于大多数 UNIX 风格。但是,它在一个 HPUX ia64 机器上工作,但在另一个机器上立即超时。 经过几次重新构建,我明白我已经设置了 tv_sec
有没有办法以编程方式 (C++) 获取 HPUX 上应用程序的 CPU 和内存使用情况? 最佳答案 How to determine CPU and memory consumption from i
我正在将 HP-UX 程序移植到 Linux。有 plock(PROCLOCK); 我应该使用 mlock() 来代替它吗? 而且原代码没有调用plock(UNLOCK),不知道为什么,但我应该添加m
在 solaris 上,我可以在核心文件上运行 pmap 命令来获取崩溃进程的内存映射。不幸的是,HPUX 和 Linux 上可用的 pmap 命令不提供此选项。我可以如何在这些平台上获取此信息的任何
我有一个客户端 tcp 套接字(在 C++ 中),它有一个循环,它会在一定的时间间隔内重试打开套接字并连接到服务器,直到成功为止。 程序中的一个错误导致连接失败后未在文件描述符上调用 close,并且
我正在通过我的 java 代码访问 HP UX 目录服务器,以重置和解锁目录服务器中锁定的用户帐户。 这是我的用户帐户密码重置代码。 openConnection(details); loadUser
我正在尝试将一个小型 C 程序从 hpux 迁移到 linux。该项目编译良好,但在运行时崩溃,显示段错误。我已经尝试使用 strace 和 gdb 查看镜子背后的情况,但仍然不明白。相关(截断)部分
我是一名优秀的程序员,十分优秀!